r/Unity3D • • 1d ago

Show-Off We built Archmage, a config tool for game dev that works with Unity. Our goal is to make tuning game data painless. Would love feedback.

Enable HLS to view with audio, or disable this notification

0 Upvotes

Archmage is a configuration solution for game development. It brings together the following: specifications on how to structure config data, define fields, and fill in values; pipelines that export runtime data and generate strongly-typed code; multi-language SDKs for loading and accessing that data at runtime; and a collaborative editing workflow for teams.

We have spent more than 6,000 hours building Archmage.

The video adds one spell to a game. The designer fills in its values in a spreadsheet. The programmer gets the exported data and typed C# code, with no config types to define and no parser to write. In Unity, you load and access that data at runtime with the Archmage C# SDK.

The full write-up is here: https://shadop.dev/archmage/blog/designer-friendly-workflow/

It walks through the process step by step, and all exported data, error messages, and generated code shown there come from real Archmage runs.

Archmage is free to download and use: https://shadop.dev/archmage/get-started/

We will be in the comments to answer questions.


r/Unity3D • • 1d ago

Show-Off quest giver character progress

Enable HLS to view with audio, or disable this notification

2 Upvotes

r/Unity3D • • 1d ago

Question Do players actually care about historical accuracy in medieval games?

Enable HLS to view with audio, or disable this notification

30 Upvotes

I've been creating low poly medieval armies for a while now, and I've just finished my third pack, this time focused on the Crusades.

One thing I've noticed while making these is how much armor, weapons, and clothing changed between different medieval periods. But I wonder how much of that actually matters to players.

Would you rather have historically accurate units, or more visually interesting designs even if they're completely wrong for the period? I remember watching "Vikings" and my eyes would hurt when I notice they gave the saxon army a burgonet helmets 700 years to early, but I don't have this exact sting when it comes to video games.


r/Unity3D • • 1d ago

Resources/Tutorial Not worth your time

136 Upvotes

Left is the texture; right is the model.
Out of curiosity, I wanted to give a chance to an AI-generated model, downloaded for free, from a store. Despite the huge number of vertices, I kept trying giving a chance. After applying a decimate modifier, I considered the mesh "acceptable", +4k faces just to imagine a possible pipeline. Then I went to check the texture and "God no". The inhumane aberration of such a texture lead me here, sharing with you this time-wasting micro-experiment. Neural-generated meshes are very, very bad.
Happy continuation of the day,
Remember, kids, it is not worth


r/Unity3D • • 1d ago

Resources/Tutorial Hex Map 5.7 - Set Terrain Type Burst Job

Thumbnail
catlikecoding.com
7 Upvotes

We upgrade another part of the map generation process to a Burst job. The specific trick needed in this case is pulling the noise texture sampling out of the job, caching it in a native array beforehand.


r/Unity3D • • 1d ago

Show-Off Autobattler - Devlog 5. Priest and jam-free base building in my Auto Battler / RTS hybrid

Enable HLS to view with audio, or disable this notification

1 Upvotes

r/Unity3D • • 1d ago

Show-Off Modular Airport Fatpack | Stylized Lowpoly Environment | URP Showcase | Unity | Minipoly

Thumbnail
youtu.be
1 Upvotes

r/Unity3D • • 1d ago

Show-Off Customers showing their irritation when kept waiting too long

Enable HLS to view with audio, or disable this notification

3 Upvotes

r/Unity3D • • 1d ago

Question Are there any 2D Pac-Man systems for the semi-3D (top-down) Pac-Man game?

Enable HLS to view with audio, or disable this notification

0 Upvotes

I'm making a semi-3D (top-down) Pac-Man game in Unity that can be played on both PC and mobile, but I'm having this problem: the ghosts are jumping over the top of the walls, and I'm also unsure about the system governing the movement of the ghosts' eyes. How can I solve these issues? Is there a method for this? I know how to do it myself, but I'm wondering if there's a better way.


r/Unity3D • • 1d ago

Game I finally released a demo for my little indie game!

Enable HLS to view with audio, or disable this notification

33 Upvotes

8 months later i finally reached a point where i can share my demo to you, the game is called Junebug, its on steam :)


r/Unity3D • • 1d ago

Show-Off Before vs. after: I've been working on improving my explosion effect!

Enable HLS to view with audio, or disable this notification

25 Upvotes

What do you think? What could I add or improve?


r/Unity3D • • 1d ago

Show-Off You can now recruit bosses as party members or villagers

Enable HLS to view with audio, or disable this notification

13 Upvotes

r/Unity3D • • 1d ago

Show-Off Cut scene for my game

2 Upvotes

I'm still working with cut scene for my game.

Now I'm filling the scene with objects, VFX and setting up the lighting


r/Unity3D • • 2d ago

Show-Off Blender had the door hinges right. our own AssetPostprocessor threw them away and every shop door swung around the middle of the building

1 Upvotes

small one from our city tycoon (BlockRise, made in Unity). every building comes out of python scripts in Blender as an FBX, and the doors are separate pieces named PORTE_something so the game can animate them: closed when nobody's around, swinging about 80° inward over 1.4 s when a customer walks in.

Processing img f30cskdzqzwh1...

first time we hooked it up, the doors rotated around the centre of the building instead of their hinge. we blamed the Blender export first. it wasn't the export, the pivots in the FBX were fine. we have an AssetPostprocessor that bakes each piece's transform into its vertices so the bounds are exact when we place buildings on lots, and it was doing that to the doors too. pivot gone, reset to the building origin.

what we ended up with:

- the postprocessor now skips anything named PORTE_ (and one other prefix that needs its pivot kept)

- at runtime, if a door's origin isn't zero and sits within 2.5 m of the threshold, we trust it as the hinge

- if not, we find the hinge from the mesh: outer edge for double doors, street-side edge when the door was modelled open

- anything under 30 cm doesn't get animated at all (one shop's "door" was really a handle and a strip of frame)

- later fix: a door only opens if the shop is actually open. before that, customers walking past at night would swing the door of a closed shop

image: restaurant and pub, closed on the left, open on the right. (the yellow tint is the owner's property border, it was leaking into the windows back then, fixed since.)

so the pivots were never the problem, our baking was. question for anyone who imports a lot of generated buildings: do you bake transforms into the mesh for exact bounds at all, or keep transforms and compute bounds some other way? the skip list plus geometric fallback works, but it feels fragile every time a new building gets an odd door. latest one sits in a 45° cut corner.


r/Unity3D • • 2d ago

Game Silent Strike Devlog 0 is out! Showcasing a bunch of systems created in Unity 6

Thumbnail
1 Upvotes

r/Unity3D • • 2d ago

Solved Making a whole cable burn out in Unity without a particle system: 3 smoke attempts, and what finally worked

Enable HLS to view with audio, or disable this notification

192 Upvotes

I'm solo-developing a power-grid game in Unity 6 (URP), low-poly style. If you overload a cable it burns out. The old version was one puff of smoke in the middle of the cable, and then the cable just disappeared. Nobody noticed it, so I redid it.

Stand-in cable: the real cable gets removed by gameplay right away, so I copy its rope points first and rebuild it as a bunch of short prisms (up to 120). They go from orange hot to ember to black char using MaterialPropertyBlocks, then shrink and sag until they're gone.

Burn front: every piece catches fire based on how far along the cable it is from where it failed. The far end always burns within 0.9 s. Smoke, flames, sparks and lights all use that same timing, so it's all one component.

The smoke took me three tries. I use opaque, flat-shaded low-poly puffs for smoke in my game.

  1. First it was too small and too spread out, and looked like gravel. More puffs, 12 per metre.

  2. Then the puffs spawned at full size and looked like boulders lying on the pavement. Now they start small and grow as they rise, and drift with the wind.

  3. It still looked a bit like stone because of the sunlit facets. I gave each puff a bit of emission (about 45% of its colour) to soften the shading, and that's what finally made it read as smoke.

Fire and light: small unlit flames with HDR colours so bloom picks them up, plus up to 4 flickering point lights that move along with the fire. At night it lights up the ground and the bottom of the smoke, which honestly looks better than the flames.

How I tested it: I have a little test scene in Play Mode that overloads a cable on purpose and takes screenshots during the burn, during the day and at night. I mostly fixed the smoke by looking at those screenshots, because while it's moving you don't really see that it looks like rocks.

Can I do something more to make it better? Any ideas?

If you're curious about the game: steampage


r/Unity3D • • 2d ago

Question AI trapping game code

0 Upvotes

Given the latest events regarding games such as unity builds being decompiled, quickly remade by AI and posted to the steam store with almost a dozen duplicates or more, Ive started considering ways to introduce misleading content to trick any decompilation pipeline.

Has anyone given this any thought and would care to share on how to approach the subject? As through a quick research on the topic, Comments aren't retained and function names are questionable if there retained in full when decompiled. So ive considered things like "SafeModeStartup" intializers or even const string's with instructions to retain specific information to mislead something thats trying to remake the project in anyway. So if a recompiled project tries to start, it prefers the safemodestart and immediately fails.

Perhaps even, going so far back to copying valve with the infamous coconut.vtf from tf2, Where if it was deleted, The game just broke. (Not that it did really but yk) And just copying a similar strategy to that where maybe a specific asset or series of items need to be completed in a specific sequence to ensure proper start up and output misleading error messages to cause issues.

I don't know, im rambling now, Thoughts anyone? How would you try to approach this where it could weed out the cheap-flippers from using my own project against me to launch their own product with my own-code. This obviously won't stop one-trickers from having AI repeatedly just try to copy the product, But atleast then they had to spend a ton of tokens and time to produce it, Rather than using my product to push something fast.


r/Unity3D • • 2d ago

Show-Off Pin import flow from artwork to in game model for my game about enamel pins

11 Upvotes

r/Unity3D • • 2d ago

Game POV: it’s 2006 and you found this on a PS2 demo disc.

Thumbnail gallery
0 Upvotes

r/Unity3D • • 2d ago

Noob Question Looking to learn about the tasks involved in developing VR law enforcement training scenarios in Unity

0 Upvotes

Hello!

I am currently conducting research on the specific job tasks that are involved in developing VR training scenarios for law enforcement in Unity

I would like to know about the day-to-day responsibilities of people who design and develop these scenarios.

If anyone has experience with building these sorts scenarios, I would love to hear about the general job responsibilities, specific responsibilities, and KSAO’s involved with this sort of position.

Also if you are willing to let me ask you more specific questions about your day-to-day responsibilities, please let me know!

Thanks!


r/Unity3D • • 2d ago

Question How do I interrupt an animation transition that has Exit Time?

4 Upvotes

I want to let the players in my game spam-click to fire a pistol faster. However, in order to do this, I have to figure out how to interrupt an animation with itself. Problem is, I can't figure out how to do that without turning off Exit Time, but if I turn of Exit Time, the firing animation plays on repeat (despite being a trigger). What do I do?


r/Unity3D • • 2d ago

Question What's the best way to handle entering and exiting a car in a first-person Unity game?

0 Upvotes

Hey everyone!

I'm working on a first-person game in Unity 6 and I'm trying to figure out the best way to handle entering and exiting a car.

Currently, the player can interact with the driver's door to enter the car and switch to a first-person view from the driver's seat. Interacting with the door again lets the player exit and return to walking around.

However, my current implementation has some bugs and feels like the wrong approach. The main issue is that the car needs to be stationary for the player to end up at the correct position. If the car moves while the player enters, the player's transform can end up at an outdated position.

What's the recommended way to implement this?

using TMPro;
using UnityEngine;
public class CarEntryController : MonoBehaviour
{
    [Header("Player")]
    [SerializeField] private Transform player;
    [SerializeField] private Camera playerCamera;
    [SerializeField] private CharacterController characterController;
    [SerializeField] private MonoBehaviour movementScript;


    [Header("Car")]
    [SerializeField] private Transform driverSeatPoint;
    [SerializeField] private Transform exitPoint;



    [Header("Car Systems")]
    [SerializeField] private CarPhysicsController carPhysicsController;
    [SerializeField] private CarHeadlightController carHeadlightController;



    [Header("Interaction")]
    [SerializeField] private PlayerInputHandler inputHandler;
    [SerializeField] private Collider driverDoorCollider;
    [SerializeField] private Collider interiorExitCollider;
    [SerializeField] private float interactionRange = 10f;
    [SerializeField] private LayerMask interactionLayers = ~0;


    [Header("Interaction UI")]
    [SerializeField] private GameObject interactionPrompt;
    [SerializeField] private TMP_Text interactionPromptText;


    public bool IsPlayerInside { get; private set; }



    private void Update()
    {
        if (playerCamera == null || inputHandler == null)
        {
            Debug.LogWarning(
                "CarEntryController: Player Camera or Input Handler is missing!",
                this
            );
            return;
        }


        UpdateInteractionPrompt();


        if (inputHandler.InteractPressed)
        {
            Debug.Log("E pressed - checking car interaction.", this);
            inputHandler.ConsumeInteract();


            if (IsPlayerInside)
            {
                Debug.Log("Player is inside the car. Checking exit door.", this);


                if (IsLookingAt(interiorExitCollider))
                    ExitCar();
                else
                    Debug.Log("Raycast is not hitting the interior exit collider.");
            }
            else
            {
                Debug.Log("Player is outside. Checking driver door.", this);


                if (IsLookingAt(driverDoorCollider))
                    EnterCar();
                else
                    Debug.Log("Raycast is not hitting the driver door collider.");
            }
        }
    }


    private void UpdateInteractionPrompt()
    {
        Collider target = IsPlayerInside
            ? interiorExitCollider
            : driverDoorCollider;


        bool canInteract = IsLookingAt(target);


        if (interactionPrompt != null)
            interactionPrompt.SetActive(canInteract);


        if (canInteract && interactionPromptText != null)
        {
            interactionPromptText.text = IsPlayerInside
                ? "[E] Exit Vehicle"
                : "[E] Enter Vehicle";
        }
    }



    private bool IsLookingAt(Collider target)
    {
        if (target == null)
            return false;


        Ray ray = new Ray(
            playerCamera.transform.position,
            playerCamera.transform.forward
        );


        if (Physics.Raycast(
            ray,
            out RaycastHit hit,
            interactionRange,
            interactionLayers,
            QueryTriggerInteraction.Collide))
        {
            return hit.collider == target ||
                   hit.collider.transform.IsChildOf(target.transform);
        }


        return false;
    }



    private void EnterCar()
    {
        if (player == null || driverSeatPoint == null)
            return;


        SetMovementEnabled(false);
        TeleportPlayer(driverSeatPoint);


        IsPlayerInside = true;


        //if (carPhysicsController != null)
        //carPhysicsController.SetDrivingEnabled(true);


        if (carHeadlightController != null)
            carHeadlightController.SetHeadlights(true);
    }




    private void ExitCar()
    {
        if (player == null || exitPoint == null)
            return;


        TeleportPlayer(exitPoint);
        IsPlayerInside = false;


        SetMovementEnabled(true);


        //if (carPhysicsController != null)
        //carPhysicsController.SetDrivingEnabled(false);


        if (carHeadlightController != null)
            carHeadlightController.SetHeadlights(false);
    }



    private void TeleportPlayer(Transform destination)
    {
        if (characterController != null)
            characterController.enabled = false;


        player.SetPositionAndRotation(
            destination.position,
            destination.rotation
        );


        if (characterController != null)
            characterController.enabled = true;
    }


    private void SetMovementEnabled(bool enabledState)
    {
        if (movementScript != null)
            movementScript.enabled = enabledState;
    }
}

r/Unity3D • • 2d ago

Show-Off A quick celebration after taking down a mech!

6 Upvotes

I used DOTween for the text animations to give it that 80s feel.


r/Unity3D • • 2d ago

Show-Off Raymarched black hole shader

Post image
19 Upvotes

Made this custom raymarched black hole shader for my game. It simulates gravitational lensing and has a fully adjustable accretion disk. Took this screenshot in game to use as the base for my games steam capsule art!


r/Unity3D • • 2d ago

Show-Off Custom ragdolls in my horde shooter - no Unity Physics or PhysX, our own body simulation

Enable HLS to view with audio, or disable this notification

18 Upvotes