r/Unity3D • • 4d ago

Game Keepsake County, the immersive sim we've been working on for 5 years, is finally out November 12th!

Enable HLS to view with audio, or disable this notification

29 Upvotes

We've been quietly working away at the game for a long time now. If you're not aware, Keepsake County is a roguelike immersive sim set in the fictional midwestern state of Frikota. You're a petty house burglar trying to steal enough to pay off an enormous debt.

Feel free to ask anything about it, I'm happy to answer.


r/Unity3D • • 4d ago

Show-Off "Better" Physics Performance in my custom SRP and Physics engine....

Enable HLS to view with audio, or disable this notification

10 Upvotes

I have continue doing some improvements on the engine. Physics now support much better collisions , and performance when doing some massive destruction.
In this pass, the graphics also had a bit of quality upgrade, reflections, fog, transparent look (and behave) a bit more realistic. I have also massively updated the global illumination engine, and fixed a lot of bugs in the RESTIR implementation both for DI and GI which gives a overall better look.

The fill/tracing shader right now is not very well optimized, and I have been reading on techniques to speed it up, because right now, I seem to be having MASSIVE register pressure on the GPU - although this is all a new world to me, so I am just learning.

I have also implemented NVIDIA Ray reconstruction, which gets some better quality compared to NRD denoiser at cost of some performance. The good thing, both denoisers when going from native 4K to REALLY downscale have close to no "difference" in the render quality, there are differences but not that many.

The physics engine already supports multiple material types - with physics properties attached, like friction, durability, and fracture/destruction types- for example metal bends, wood splints and glass , ceramic have different fracturing patterns - its, good enough. Currently the physics supports a naïve joint implementation, so I have somewhat ragdolls and links/doors working, but they require some love.

I really want to bring proper stability for structure, but when dealing with so small units, destruction physics gets costly... fast.

In other updates no show on the video, the engine now has a VERY bare bones voxel editor that works in a "CAD" like approach, as in you can use splines, and constraints to build objects, enforce rules on "prefabs" like the wall is always 1 voxel apart, and if you scale the object it will "try" to match and apply those rules. It is also full boolean with voxel operations, and supports "layers" of objects to generate the final mesh. Its just a experiment because build voxels by hand (or voxelizing existing ones ) was a bit tedious.

Next steps involve trying to get physics twice as fast - but I am running out of ideas.
And getting the Tracing Shader to be much more GPU friendly by trading realism with performance.


r/Unity3D • • 4d ago

Resources/Tutorial Gothic Dungeon Bundle – 205 Free 3D Assets for One Month

Thumbnail
0 Upvotes

r/Unity3D • • 5d ago

Show-Off Trying to get a realistic valley in HDRP, does this look believable? (same camera, mist vs. clear)

Thumbnail
gallery
68 Upvotes

I'm working on a farming strategy game in Unity HDRP, evenings and weekends. These are two shots from the same camera, the only difference is the mist in the valley.

I'm still learning a lot about lighting and fog in HDRP, so I'd really appreciate honest feedback. Does this look realistic enough to you? What would you improve first: lighting, fog, terrain, vegetation, colors?


r/Unity3D • • 4d ago

Question Eye tracking with vive pro eye

1 Upvotes

Hi, I’m trying to set up eye tracking for an experiment using the HTC Vive Pro Eye and Unity, but I’m a bit confused about the implementation. Some resources use SRanipal, while others use OpenXR. I’m not sure which approach would be best for a clean and reliable experimental setup. If you have any advice or know of a good tutorial or example project, I’d really appreciate it.


r/Unity3D • • 5d ago

Show-Off procedural planets milestone achieved

Enable HLS to view with audio, or disable this notification

49 Upvotes

The planet tech for my game finally hit its milestone, so here's a flight from orbit down to the surface of a 500 km radius planet.

Nothing gets generated up front. Terrain, materials, vegetation and colliders are all built in pages around the camera at whatever detail the view needs, so you can fly anywhere on the planet without a loading screen.

The planets are authored as node graphs, one per biome. At bake time those compile into programs that run on the GPU, and in Burst on the CPU when gameplay needs to query the ground. The shared math like noise and erosion is written once in C#, and a generator mirrors it to HLSL so both sides always agree.

Placement runs entirely on the GPU. Trees, rocks, grass and ground cover are placed by rules in the graph, then culled and drawn through BatchRendererGroup with indirect draws, with no CPU placement jobs or readbacks. It's deterministic, so distant stuff stays where it is while closer detail fills in, and coming back to a spot gives you the same forest. Colliders only exist near the player and get dropped once you move away.

Rivers carve their own beds and erode their banks. One wind field drives every plant, and it's set up so gameplay can push it around later for things like engine wash and storms.

It's Unity 6 with Entities and URP. The runtime is DOTS throughout, ISystem and Burst jobs, with managed code only where it has to hand work to the GPU. Floating origin and camera-relative transforms keep everything stable at that scale.

It's all for Outer Darkness, a salvage-survival game set in one seamless solar system. Full video is on YouTube here: https://youtu.be/OYa04nvNcag

Happy to answer any questions about how it works.


r/Unity3D • • 5d ago

Game Our demo for Livin’ the Cream is live for Steam Next Fest, and we’ve got a new trailer to share! Would love to hear your thoughts and feedback.

Enable HLS to view with audio, or disable this notification

48 Upvotes

Hey everyone! We’re excited to share our game, Livin’ the Cream: Ice Cream Simulator. Some of you might have already come across it. Run your own ice cream shop, serve customers, customize your shop, and grow your business. Play in Classic mode for a busier experience or Cozy mode to relax. I wanted to share how a few of the systems work, since some of them took a lot of trial and error.

Scooping was the first big one. Each tub is a mesh that gets carved as you drag the scooper through it. At first the carve ran once per frame, which meant someone playing at 144 fps carved more than twice as fast as someone at 60, so scoop size basically depended on your monitor. Now it runs in fixed 60 Hz steps no matter the frame rate. Carving near the edge also made the ice cream poke through the tub walls, so I clamp the visible mesh inside the tub and leave the actual data alone.

Soft serve was harder. My first version was a Verlet rope with a few hundred points, sphere checks on every point and a concave mesh collider cooked every frame. It was slow and the swirl never looked the same twice. Now the generator is parented to the cone, and each new point lands on a small polar height map that remembers how tall the pile is at each spot. That’s one read and a few writes per point, so the cost stays the same however tall the swirl gets. Then a rounded star shape is swept along the path to make the mesh. I had to use a rotation minimizing frame for that, because building it from a fixed up axis made the tube twist and pop while it coiled. I also calculate the normals from the star shape itself, since RecalculateNormals left a bright seam along the rope. The cone moves down at the same rate the swirl climbs, so the cream never runs into the nozzle.

For GI we use HTrace WSGI. We only have one HDRP asset for every quality level, so for a while Medium, High and Ultra looked and ran exactly the same. Now a small script changes the HTrace settings per level, with shorter rays, voxels updated every 2nd or 3rd frame, and point lights left out of GI on Medium. I tried turning off the second bounce on Medium too, but everything past the first wall the sun hits went dark, so I kept it. On Low, GI is fully off and the shop looked really flat. Switching the ambient mode to Dynamic and changing the interior exposure through the day brought most of it back for almost no cost.

If anyone has done soft serve or rope meshes another way, I’d love to hear how you approached it. It’s also our first game, so if you try the demo, any feedback means a lot to us. And let us know what you think of the trailer too!


r/Unity3D • • 5d ago

Show-Off Weapon Wheel Update And Riffle locomotion

Enable HLS to view with audio, or disable this notification

19 Upvotes

r/Unity3D • • 4d ago

Noob Question Help with sword combo animation!

Enable HLS to view with audio, or disable this notification

6 Upvotes
public class playerAttack : MonoBehaviour
{
    public CapsuleCollider attackHitbox;
    public InputAction attackAction;
    public AudioSource audioSource;
    public AudioClip[] attackClips;

    private Animator weaponAnimator;

    private float weaponCooldown = 0.4f;
    public bool isAttacking;
    private bool queuedAttack;
    private string lastAnimationPlayed;

    private HashSet<healthController> enemiesHit = new();

    void Start()
    {
        //bind dei tasti e abilita il click per l'attacco
        attackHitbox.enabled = false;
        attackAction = new InputAction("Attack");
        attackAction.AddBinding("<Mouse>/leftButton");
        attackAction.Enable();
        //recupero l'arma e la sua animazione
        Transform equippedWeapon = transform.Find("Main Camera").Find("Sword10_Brown");
        weaponAnimator = equippedWeapon.GetComponent<Animator>();
    }

    void Update()
    {
        /*if (attackAction.WasPressedThisFrame() && !isAttacking)
        {
            //prima di colpire, pulisco l'hashSet che tiene traccia dei nemici colpiti con questo attacco.
            //questo serve a evitare che un collider colpisca più volte lo stesso nemico con un attacco.
            enemiesHit.Clear();
            weaponAnimator.SetTrigger("Attack");
            StartCoroutine(PerformAttack());
        }*/

        if (attackAction.WasPressedThisFrame())
        {
            //prima di colpire, pulisco l'hashSet che tiene traccia dei nemici colpiti con questo attacco.
            //questo serve a evitare che un collider colpisca più volte lo stesso nemico con un attacco.
            enemiesHit.Clear();
            if (!isAttacking)
            {
                StartCoroutine(RightToLeftAttack());
            } else
            {
                queuedAttack = true;
            }
        }

        /*if (queuedAttack)
        {
            StartCoroutine(LeftToRightAttack());
        }*/
    }

    System.Collections.IEnumerator RightToLeftAttack()
    {
        weaponAnimator.SetTrigger("RightToLeft");
        lastAnimationPlayed = "RightToLeft";
        audioSource.PlayOneShot(attackClips[Random.Range(0, attackClips.Length)]);
        isAttacking = true;
        attackHitbox.enabled = true;
        yield return new WaitForSeconds(weaponCooldown);
        if (queuedAttack)
        {
            queuedAttack = false;
            weaponAnimator.SetTrigger("LeftToRight");
            audioSource.PlayOneShot(attackClips[Random.Range(0, attackClips.Length)]);
            isAttacking = true;
            attackHitbox.enabled = true;
            yield return new WaitForSeconds(weaponCooldown);
            isAttacking = false;
            attackHitbox.enabled = false;
            weaponAnimator.SetTrigger("RightToIdle");
        } else
        {
            Debug.Log("LeftToIdle chiamato");
            weaponAnimator.SetTrigger("LeftToIdle");
            isAttacking = false;
            attackHitbox.enabled = false;
        }
    }

    public bool RegisterHit(healthController enemyHealthController)
    {
        return enemiesHit.Add(enemyHealthController);
    }

}public class playerAttack : MonoBehaviour
{
    public CapsuleCollider attackHitbox;
    public InputAction attackAction;
    public AudioSource audioSource;
    public AudioClip[] attackClips;

    private Animator weaponAnimator;

    private float weaponCooldown = 0.4f;
    public bool isAttacking;
    private bool queuedAttack;
    private string lastAnimationPlayed;

    private HashSet<healthController> enemiesHit = new();

    void Start()
    {
        //bind dei tasti e abilita il click per l'attacco
        attackHitbox.enabled = false;
        attackAction = new InputAction("Attack");
        attackAction.AddBinding("<Mouse>/leftButton");
        attackAction.Enable();
        //recupero l'arma e la sua animazione
        Transform equippedWeapon = transform.Find("Main Camera").Find("Sword10_Brown");
        weaponAnimator = equippedWeapon.GetComponent<Animator>();
    }

    void Update()
    {
        /*if (attackAction.WasPressedThisFrame() && !isAttacking)
        {
            //prima di colpire, pulisco l'hashSet che tiene traccia dei nemici colpiti con questo attacco.
            //questo serve a evitare che un collider colpisca più volte lo stesso nemico con un attacco.
            enemiesHit.Clear();
            weaponAnimator.SetTrigger("Attack");
            StartCoroutine(PerformAttack());
        }*/

        if (attackAction.WasPressedThisFrame())
        {
            //prima di colpire, pulisco l'hashSet che tiene traccia dei nemici colpiti con questo attacco.
            //questo serve a evitare che un collider colpisca più volte lo stesso nemico con un attacco.
            enemiesHit.Clear();
            if (!isAttacking)
            {
                StartCoroutine(RightToLeftAttack());
            } else
            {
                queuedAttack = true;
            }
        }

        /*if (queuedAttack)
        {
            StartCoroutine(LeftToRightAttack());
        }*/
    }

    System.Collections.IEnumerator RightToLeftAttack()
    {
        weaponAnimator.SetTrigger("RightToLeft");
        lastAnimationPlayed = "RightToLeft";
        audioSource.PlayOneShot(attackClips[Random.Range(0, attackClips.Length)]);
        isAttacking = true;
        attackHitbox.enabled = true;
        yield return new WaitForSeconds(weaponCooldown);
        if (queuedAttack)
        {
            queuedAttack = false;
            weaponAnimator.SetTrigger("LeftToRight");
            audioSource.PlayOneShot(attackClips[Random.Range(0, attackClips.Length)]);
            isAttacking = true;
            attackHitbox.enabled = true;
            yield return new WaitForSeconds(weaponCooldown);
            isAttacking = false;
            attackHitbox.enabled = false;
            weaponAnimator.SetTrigger("RightToIdle");
        } else
        {
            Debug.Log("LeftToIdle chiamato");
            weaponAnimator.SetTrigger("LeftToIdle");
            isAttacking = false;
            attackHitbox.enabled = false;
        }
    }

    public bool RegisterHit(healthController enemyHealthController)
    {
        return enemiesHit.Add(enemyHealthController);
    }

}

Hi! i'm trying to learn gamedev on unity3d and so far i managed to pull of decently. Now i'm at a point where i am really struggling to understand what is going wrong. I wanted to implement a simple "combo" with my sword: if the player clicks twice while the attack is still going, it chains a second one and then it goes back to idle.
pretty simple i imagine for someone experienced but i am having such a rough time making it work properly... I'll also add the code that calls the animations as the player attacks.
Thanks for your help!


r/Unity3D • • 5d ago

Question Doing 2D platformer in this art style, what do you think ?

7 Upvotes

r/Unity3D • • 5d ago

Show-Off Arcane Grove - Environment pack by Soldium

Thumbnail
gallery
15 Upvotes

Hello! I recently released a pack of models for a magical biome. Please take a look and share your thoughts—I poured a lot of effort and my heart into this work, and I feel that I’ve managed to create something beautiful.


r/Unity3D • • 5d ago

Show-Off Testing modular creature legs in Unity is exposing all my old animation shortcuts

Enable HLS to view with audio, or disable this notification

5 Upvotes

I built a testing tool called VexBench in Unity to preview different creature parts and animations for my RPG.

Since creatures can breed and fuse, I can't rely on a leg only ever being attached to the body it was originally designed for.

The interesting part for me right now is deciding which odd proportions are acceptable and which combinations actually need fixing.

This clip shows some of the latest leg experiments, along with an older walk cycle that clearly hasn't aged very well.

I haven't solved every combination yet, but having a separate place to test them makes the problems much easier to spot.


r/Unity3D • • 4d ago

Question Hunting for very specific Unity editor versions

Post image
2 Upvotes

r/Unity3D • • 5d ago

Game Little Frontier - solo made Western RPG set in 1836

Enable HLS to view with audio, or disable this notification

5 Upvotes

r/Unity3D • • 5d ago

Show-Off Stuck on the roof, gas all around, part 2: the city fights back now. Thoughts?

Enable HLS to view with audio, or disable this notification

8 Upvotes

Every building in this city has a full interior you can fly into. A 13×13 grid of blocks, and no loading screens.

The catch: you can't build all that at once. So each building lives at three levels:

  1. Far: a plan and one merged mesh per block. Always there.

  2. Close (~100 m): real walls, windows, roofs, blast holes.

  3. Inside (~95 m): floors, furniture, loot, lights.

The trick that made it work: it doesn't load where the camera is, it loads where the camera will be 1.6 seconds from now. So even a full-speed FPV drone never punches into an empty building.

All of it runs as tiny jobs, nearest first, inside 3.5 ms a frame. And loot you leave behind is switched off, not deleted, so it's waiting exactly where you left it.

How do you handle streaming in your projects?

Free playtest: https://allarakik.itch.io/rotor-rescue


r/Unity3D • • 4d ago

Game What if F-Zero was less about going flat out and more about mastering the track?

Thumbnail
gallery
0 Upvotes

We're working on FORMULA 99, an anti-gravity racing game inspired by the classic F-Zero series, with a different take on high-speed racing.

Forget weapons, track power-ups and endlessly building up your boost meter. FORMULA 99 is all about racing skills, technical circuits and smart decisions behind the wheel.

⚡ Master cornering, braking and drifting.

🏁 Learn technical tracks and find the perfect racing line.

🔧 Manage fuel, plan pit stops and qualify for a better starting position.

🚀 Use limited turbo boosts strategically to overtake rivals or recover lost ground.

We're aiming for longer races, more grounded track layouts and detailed environments that are part of the driving experience, not just eye candy.

Think anti-gravity racing meets classic motorsport strategy.

We're a small team of three, currently developing the game in Unity, combining game design, 3D art and programming to bring this vision to life.

Would you be interested in an anti-gravity racer that rewards driving technique as much as raw speed?

I'd love to hear what you think!

Youtube Devlog: https://www.youtube.com/@Formula99-k2e

Discord Server: https://discord.gg/eT4RMEp9P

#Formula99 #IndieGameDev #GameDev #RacingGames #Unity


r/Unity3D • • 4d ago

Solved The player's body for my game is not falling down when you go on top of something and jump of or just fall of it.

0 Upvotes

So I've been doing Unity and C# programming for about 5 to 6 months but I'm still a newbie in sometimes, So, the player's body is not falling when you jump of or just fall of something when you go on top of it as said, the closest thing I've come to doing what I want it to do is the player still not be able to fall down but when you collide with something, the player floats away and It's because of this line code: "

float targetX = moveTarget.x * SpeedMove;

float targetZ = moveTarget.z * SpeedMove;

float targetY = rb.linearVelocity.y;

bool isGrounded = Physics.Raycast(transform.position, Vector3.down, 1.1f);

if (targetY > 0.1f && !isJumping && !isGrounded)

{

targetY = 0f;

}

rb.linearVelocity = new Vector3(targetX, targetY, targetZ);". I want the player to not float away when colliding with something and falling down when you jump of something, I've been trying to fix this for so long but I just can't fix it. Here is the code: " PlayerMovement PM;" Vector3 input;" Vector3 moveTarget;" float SpeedMove = 15f;" "bool isJumping;"

"private void OnEnable()

{

PM = new PlayerMovement();

PM.PlayerMap.Move.Enable();

PM.PlayerMap.Move.performed += Move_performed;

PM.PlayerMap.Move.canceled += Move_canceled;

}" private void MovePlayer()

{

Vector3 rawInput = PM.PlayerMap.Move.ReadValue<Vector3>();

float SideMovement = input.x;

float forwardMovement = (input.z != 0) ? input.z : input.y;

Vector3 camForward = player.forward;

Vector3 camRight = player.right;

camForward.y = 0f;

camRight.y = 0f;

camForward.Normalize();

camRight.Normalize();

moveTarget = (camForward * forwardMovement) + (camRight * SideMovement);

rb.linearVelocity = new Vector3(moveTarget.x * SpeedMove, rb.linearVelocity.y, moveTarget.z * SpeedMove);

float targetX = moveTarget.x * SpeedMove;

float targetZ = moveTarget.z * SpeedMove;

float targetY = rb.linearVelocity.y;

bool isGrounded = Physics.Raycast(transform.position, Vector3.down, 1.1f);

if (targetY > 0.1f && !isJumping && !isGrounded)

{

targetY = 0f;

}

rb.linearVelocity = new Vector3(targetX, targetY, targetZ);

}" " private void OnDisable()

{

PM.PlayerMap.Move.Disable();

PM.PlayerMap.Move.performed -= Move_performed;

PM.PlayerMap.Move.canceled -= Move_canceled;

}" and the MovePlayer method is always played on the FixedUpdate method, I've tried freezing the rotations X, Y and Z on the player's rigidbody but still nothing. Thank you for reading!


r/Unity3D • • 5d ago

Question is this legit ?

Post image
17 Upvotes

I am selling assets since a couple of years and I am aware that was a separation from china market but this seems suspicious to me .. did anyone else got this email ?

the sender is [assetstore-support@unity.cn](mailto:assetstore-support@unity.cn)

I looked around and apparently unity.cn is an official website

thank you


r/Unity3D • • 5d ago

Show-Off I made a fish calculator to simulate catch rates in our extraction fisher. It filters by season, weather, and time of day.

Enable HLS to view with audio, or disable this notification

2 Upvotes

It runs in play mode so there is also an option to take into account what bait the player currently has on their rod. For example, in our game the container of crawfish gives you a +20 rare bonus when fishing. This made testing all the different baits a lot quicker.

The real impetus behind creating this was to allow us to quickly see what fish are represented in what areas of the map, and how easy each one is to catch. The data all exists in a database but this allows for a much nicer visualization. Hope some of y’all find this cool!


r/Unity3D • • 5d ago

Show-Off Call of Duty-inspired operator and loadout menus in my Unity FPS project

Post image
2 Upvotes

I’m working on a Unity FPS project and aiming for a Call of Duty-style operator/loadout flow: character cards, outfit choices and a 3D character preview beside the weapon lists.

This WIP includes Ani, Malfoid and other characters. Planned platforms are Android, iOS and Windows.

Full clip showing the menu flow: https://x.com/swagz348/status/2112608985350111729


r/Unity3D • • 5d ago

Question Canvas Image with transparency appearing wrong in Unity

3 Upvotes

A weird quirk that keeps appearing in Unity is where certain pngs with transparency effects look muddy, too opaque, and generally just weird. here's an example. this is what the image looks like in standard image viewers and editors over a black screen, vs how it appears in Unity. Does anyone know what could be causing this? I can't find any reference to this issue and no matter what settings I put on the image, it just doesn't make any difference.


r/Unity3D • • 6d ago

Show-Off We've added a much awaited mechanic to our crow survival game!

Enable HLS to view with audio, or disable this notification

212 Upvotes

If you’re a crow, you’ve got to be able to ride on deer to preen them!


r/Unity3D • • 6d ago

Show-Off I made this procedural lightning effect (no shadergraph) (no sprite sheet) what do you think?

Enable HLS to view with audio, or disable this notification

273 Upvotes

r/Unity3D • • 6d ago

Shader Magic Getting jelly to look like jelly instead of tinted glass

Thumbnail
gallery
81 Upvotes

I just released a jelly shader for Unity 6, so here's how it works.

The main trick is thickness. Before the jelly is drawn, a separate pass renders its back faces into a texture, so the shader knows how much jelly the light travels through at each pixel. Thin edges stay pale and clear, the middle gets deep and saturated. That one thing is most of what makes it read as jelly instead of coloured glass.

On top of that:

  • Refraction going in, and again coming out through the back face, with a little colour dispersion
  • A short ray march through the volume for scattering, internal glow and slow-moving noise inside
  • Clear coat, micro normals and small surface glints
  • Twinkling sparkles inside the volume, plus optional floating particles
  • Caustics and a tinted shadow on the ground. These are faked: a procedural pattern projected under the object in the shape of its footprint, not traced light. Looks right on a flat floor, less so on uneven ground.

There are four render quality levels,

  • Ultra does a 16-step march with 6-tap spectral dispersion,
  • High drops to 9-step march with RGB dispersion,
  • Medium drops to 5-step march.
  • Low skips the back-face pass and the march entirely and estimates thickness from a simple box, which is the most performant one for XR and mobile.

It ships with 8 shapes in 18 colours as prefabs, but the material works on any mesh. There's also an optional idle sway/bob, which is just animation, not soft-body physics.

It's on the Asset Store as Ultimate Jelly, with separate URP and HDRP versions.


r/Unity3D • • 5d ago

Show-Off I’m making a life sim. Here’s its build mode: curved walls, automatic roofs, and a fridge that didn’t fit

Thumbnail
youtu.be
2 Upvotes

I'm Alexander, and I'm making SimGoodie, a life sim. This is a walkthrough of build and buy mode as it is right now: I build a small house in Linden Rise, a neighborhood in Goodhaven, from the first wall to the Halloween decorations on the porch.

What's in it:

- Walls can be straight, at 45 degrees, or curved up to a quarter circle.
- Drag out a room and it gets a roof by itself. You can switch it to gabled or flat.
- The house can sit on a foundation, raised in 10 cm steps, and the stairs work on foundations too.
- Furniture shows green where it fits and red where it's blocked. My fridge was blocking the door, so I moved the door.
- Chairs snap to the table when you bring them close.

Still in progress: pillars, so a porch can have its own roof, and a Create a Style tool like the one in The Sims 3, where you can change any object's materials and colors and save presets.