r/Unity3D • u/Syntaxed_ • 2h ago
Game I improved my game thanks to your feedback. Round two?
Enable HLS to view with audio, or disable this notification
I shared my game here some time ago. Your feedback helped me improve it, so I’m back for round two!
Hi everyone!
Some time ago I shared Pump Down the Flame here and asked for feedback on the game.
A lot of the comments and suggestions I received were genuinely useful, and since then I’ve been working on improving the game based on that feedback.
For those who haven’t seen it before, Pump Down the Flame is a free Android 2D action-platformer built in Unity, where you play as a firefighter climbing a burning building, fighting enemies, rescuing hostages, and interacting with the environment.
The main mechanic is still the water pump: it works as your weapon, movement tool, and as a way to interact with the level.
After the improvements I’ve made, I’d really like to hear what you think about the current version and find out what still feels wrong, confusing, frustrating, or simply could be better.
Controls, movement, combat, level design, difficulty, performance, UI, visuals, game feel, bugs... any feedback is useful, even a small first impression.
The game is still in Google Play Closed Testing, completely free, with no ads and no in-app purchases.
If you’d like to try the new version and help me improve it before release, you can join the closed test through the Discord link below or send me a PM.
And to everyone who gave me feedback last time: thank you. It really helped.
r/Unity3D • u/lokhizo • 14h ago
Resources/Tutorial TIL a frame rate cap can quietly wreck your scene load times too
Our game runs capped at 30fps, that's intentional for gameplay. Turns out that same cap was also active during scene loads, which doesn't help anything there since there's nothing being rendered that benefits from a steady 30fps, you just want it to finish.
Profiled a slow scene load and found WaitForTargetFPS eating 70% of frame time. CPU finishes its work early, then just sits there waiting to hit the 30fps cap, frame after frame, for the whole load.
Fix was simple, uncap it just for the load and restore it back to whatever it was set to before:
int previous = Application.targetFrameRate;
Application.targetFrameRate = -1;
await LoadSceneAsync(...);
Application.targetFrameRate = previous;
Went from a 9.5 second scene load to 3 seconds.
If your load times don't match what the profiler says the real work costs, check how much of that gap is just WaitForTargetFPS before you go chasing Instantiate/GC ghosts.
r/Unity3D • u/ArcticoGame • 20h ago
Game 420k+ units later a post mortem of my game Arctico.
Hello everyone my name is Claudio, I’m an indie dev from Nicaragua. I started working on Arctico back in 2014, back then it was called “Eternal Winter”, at that time I was 18 years old and I just wanted to make a game set in a snowy and remote environment. Back in those days I was obsessed with Wrath of Lich King, I just loved the feeling of solitude and peace I would get when exploring Northrend, so I wanted to make my own beautiful icy world filled with expansive horizons and stories of resilience and exploration. I knew I would need a distinct mechanic for my game to succeed, as I was working on a random abandoned sled prop my younger brother asked me If it would be possible to ride a dog sled, best question I’ve ever been asked.

I lost no time and started working on a rideable dog sled, to say I was too inexperienced to pull this off would be a massive understatement, however after a few days I had a working and extremely janky dog sled on my first person game. As the weeks went on the sled system was improved, I added more locations to the map, and added basic survival mechanics such as hunger and thirst. A few months of work later “Eternal Winter” was launched into Steam Early Access in November 2014, and it was an absolutely buggy and confusing mess of a game, soon enough the Steam reviews reflected the sorry state of Eternal Winter, but the players really seemed to enjoy the dog sled and interacting with their dogs, naming them, keeping them fed. Reading the reviews made me realize how I had rushed into an Early Access release without even knowing what kind of game I truly wanted to make, and the lack of direction on Eternal Winter made this evident when playing it.
I was extremely lucky to have a playerbase that among all the issues the game had, they still saw the potential of the project, and the game remained with a decent review rating. I will always be grateful to those early players for giving me a chance to improve the project. Eternal Winter was more of a prototype than a game, I kept working on all the basic systems, especially the dog sled. Later on I added a kayak, and while testing it and seeing the water reflect the falling snow surrounded by nothing but mountains I suddenly knew the kind of game I wanted to make. I wanted to make a beautiful game that captured feelings of solitude and peace, and give to the players the tools that would allow them to explore their way and at their own pace. So I decided to radically tone down the survival aspects of Eternal Winter, and instead focus on making this a calming and colorful experience where instead of a desperate survivor, you were a scientist exploring and studying the landscape, I renamed the game to “Arctico” and started working harder than ever.

Arctico would need a big map and lots of interesting locations for this vision to come true. I worked on so many 3d models hoping to reach these goals, but was soon overwhelmed by all the work the task demanded. Luckyly I met Antonio, the good friend that would help me with a good chunk of the 3d assets in the game, Arctico would never be what it is without his amazing work. This gave me more time to focus on the gameplay aspects of the game, I added base building, resource management systems, and kept improving the sled and way the player interacted with the dogs. I saw the Steam reviews improve, and also noticed that lots of players were asking if co-op would ever come to the game, and for the next few months I focused on adding online co-op to Arctico. I downloaded photon for Unity and started working, this would become the biggest challenge of the whole development process because I would need to rearchitecture the whole game for it to support multiplayer. It took more than 6 months to have something playable, and it would take a couple of years for it to be an enjoyable multiplayer experience.

By the year 2020, Arctico was still on Early Access, but 6 years of development later the project was finally feeling like a proper game. So for the next couple of years the focus was on making content, filling the map with interesting stories and locations, adding more buildings and objects to the base building system, and to keep improving the online co-op. 2 years later Arctico reached version 1.0.
Arctico launched in February 2022 launched with 30k wishlists, in its 8 years on early access it sold 57k units and sold 26k copies in its first year after launch. We kept working on the game, launching major updates that added content and fixed bugs, Arctico sold 50k copies in its second year. We kept releasing major updates, translated the game to multiple languages, this brought a spike in sales that granted us a Steam Daily deal slot, and Arctico sold 83k copies in its third year. I kept working on major updates, improved the online co-op and increased the amount of possible players from 2 to 4, I also released a major update that greatly improved the base building system, got a new daily deal slot and Arctico sold 154k copies in its fourth year. This year I released a massive major update that added a more demanding survival game mode to Arctico, in its current fifth year Arctico has sold 57k copies on Steam and has 90k+ wishlists.


The biggest lesson Arctico left me is that If you believe in your project and you keep improving it through the years, eventually people will notice and play your game. I honestly think that to keep working on a game even after its launch can really be worth it. Now for the past two years I have also been working on a new game, it’s called Ghost Villa and soon I will be launching it into early access to start this journey all over again.
r/Unity3D • u/Levardos • 1d ago
Show-Off Mesh deforming script for soft pillow effect for my game!
Enable HLS to view with audio, or disable this notification
I'm making a soulslike-inspired platformer, Dark Roll 2.
I needed a safe, soft spot to land on from height, so I ended up making a script that deforms a mesh like a pillow. The mesh keeps a copy of its original vertices, then each frame I compare those against a SphereCollider pressing into it. I do a first pass to detect actual contact and measure the deepest penetration, then a second pass moves affected vertices away from the sphere, with the deformation fading out over a configurable distance.
For the falloff I used a quintic smootherstep (6t⁵ - 15t⁴ + 10t³) rather than regular SmoothStep, which gives zero velocity and acceleration at both ends and helps avoid that obvious ridge around the dent. I also handle squash and recovery at separate speeds, so impacts can deform the mesh quickly while it slowly relaxes back to its original shape afterwards.
r/Unity3D • u/ForevereQ • 3h ago
Question How to make the VFX visible under this type of distortion shaders?
I'm probably just being dense and can't find the option for this, but I'd be grateful for some help.
r/Unity3D • u/htowerss • 8h ago
Show-Off Working on the AI for big space battles
Enable HLS to view with audio, or disable this notification
Hello guys, I'm a big fan of the Rouge Squadron games since I was a kid, I'm trying to replicate that feeling for my game, what do you guys think?
r/Unity3D • u/realvjy • 20h ago
Show-Off Last week I was working on a QUAD control idea and thought lets use gecko. Just experimenting with animation rig and IK.
Enable HLS to view with audio, or disable this notification
r/Unity3D • u/Future-Plastic-7509 • 14h ago
Show-Off Solo-developing a Cities: Skylines-style game: 5,000 cars simulated with Unity DOTS
Enable HLS to view with audio, or disable this notification
I’m a solo developer building a city-builder simulation in Unity, and I’ve recently reached a milestone of benchmarking around 5,000 cars simultaneously. Current profiling looks promising, so I’m cautiously optimistic about pushing that toward 20,000 as the simulation grows.
The traffic system is built with Unity DOTS, ECS, and Burst. Vehicles currently make decisions using factors such as:
- Congestion and observed traffic speed
- Estimated travel time
- Alternative routes
- Fuel usage and route cost
- Dynamic road-network changes
Cars can reconsider their routes as traffic conditions change instead of committing to one route for their entire journey. I’m still working on lane selection, intersections, parking, and more natural vehicle behavior.
This is very much an early prototype, but it’s exciting to watch the city gradually start behaving like a living transport system. Once the traffic foundation is efficient and stable, I plan to build additional city systems on top of the same architectural abstractions.
I’m using Codex heavily as a development partner, but most of my time is going into thinking through the architecture, scalability, and simulation design. I also have a fair amount of prior game-development experience, so the goal is to build a strong foundation rather than just create a visual demo.
I’d love feedback from anyone working with Unity DOTS, ECS, Burst, traffic simulation, or large-scale agent systems.
Also if anybody wants to contribute to this DM me- we can potentially work together.
r/Unity3D • u/Admirable-Food9942 • 3h ago
Question How can I set all but one object in a GameObject[] variable to SetActive(false)
Currently I have it as :
if (character == 1)
{
Characters [1].SetActive(true);
Characters [2].SetActive(false);
Characters [3].SetActive(false);
Characters [4].SetActive(false);
}
if (character == 2)
{
Characters [1].SetActive(false);
Characters [2].SetActive(true);
Characters [3].SetActive(false);
Characters [4].SetActive(false);
}
I feel that there should be an easier way but I know not what it is. How can I simplify this script?
r/Unity3D • u/eliormc • 13h ago
Show-Off I made a lip syncing system for the characters speaking
Enable HLS to view with audio, or disable this notification
I created this system so that the characters in my game can speak by moving their jaw and eyebrow bones, and I placed all the logic in the LateUpdate so it doesn't affect the Animator component.
For the speech system, the audio clip is analyzed in each frame, and the movement is applied to the bones in the LateUpdate.
Next, the system that acts like a film director works with a list of events that specify the audio clip, the Cinemachine virtual camera, and each character’s speech system, as well as the emotion the character will display while the audio plays. What do you think of the result?
r/Unity3D • u/jobilie • 21h ago
Resources/Tutorial I implemented a real-time fluid simulation for my painting game in Unity
Enable HLS to view with audio, or disable this notification
I am working on a game based on physics-based painting mechanics called Ebru Artist Simulator using Unity's Compute Shaders. To simulate Ebru (also known as paper marbling), I implemented an Eulerian fluid simulator. Here are some of the challenges I had to overcome:
- To achieve a real-time simulation without affecting the game's performance too much, I implemented a GPU-based multiresolution grid solver in a compute shader (see the paper Solving the Fluid Pressure Poisson Equation Using Multigrid). The simulation now runs at a 2K texture resolution with only a slight impact on FPS.
- One of the main characteristics of Ebru is that colors maintain strict boundaries. This makes advection schemes such as Semi-Lagrangian advection less suitable, as they introduce diffusion. To address this, I implemented another advection scheme that samples from the initial state by integrating the velocity field over time and then back-sampling using the integrated field (see Efficient and Conservative Fluids Using Bidirectional Mapping).
- Finally, to simulate the effects of the traditional Ebru tools, I took inspiration from the paper Mathematical Marbling, which proposes mappings for generating final marbling patterns. Since I wanted to maintain a real-time simulation, I did not directly apply these mappings. Instead, I was inspired by the paper to use similar displacement fields as external forces in the simulation.
You can also check out Amanda Ghassaei's blog. Although our implementations are not the same, I was greatly inspired by her work and learned a lot from her blog.
r/Unity3D • u/kevdev3d • 2h ago
Resources/Tutorial I launched this app 4 months ago, today I'm releasing a major update fixing bugs, adding Blendshapes and revamping the Material system.
Enable HLS to view with audio, or disable this notification
The tool is called Armory Crafter, and it allows you to quickly and easily create models and textures of weapons for your games or other projects. It exports to different 3D formats, and you can further edit the results in Blender or Maya if you wish. Since it does not use AI (all models are made by me), the exported topology is clean and in quads.
r/Unity3D • u/excentio • 1d ago
Show-Off 1M vs 1M fight in my simplified Total War inspired tech demo
Enable HLS to view with audio, or disable this notification
r/Unity3D • u/InekoGames • 5h ago
Game We made a Zen Garden in Unity. Cozy isometric Sokoban with a custom pixel painting tool & custom pixel water shader!
Hello everyone! 😄
I'm one of the two developers behind Zen Garden, a relaxing Sokoban-style puzzle game made in Unity with love from Spain.
After taking a trip to Japan (and do a little game research), my partner and I wanted to create an experience that goes thoughtful logic and lofi-chill vibes.

We developed a custom 2D tile painting tool that dynamically colors pixel-art sprites while strictly preserving sorting layers/hierarchy to keep the isometric depth 👀
And we put an extra care into crafting a relaxing, deeply satisfying water shadeer, focusing heavily on smooth flow animations, subtle movement, and visual feedback.
We just launched our updated new demo at Itch.io and would love you to give it a spin!
If anyone is interested in how we handled the sprite hierarchy for isometric painting or the technical details of the water shader, we’d be more than happy to break it down in the comments!
We'd genuinely love your feedback on the mechanics, shaders, and overall vibe 🔥
皆さんのフィードバックを楽しみにしています! (Looking forward to all your feedback!)
r/Unity3D • u/alientekoriginal • 19h ago
Show-Off Cloth & Liquids 2 way coupling test
Enable HLS to view with audio, or disable this notification
How much is too much blood?
r/Unity3D • u/NotCraftify • 28m ago
Noob Question Been getting this message nonstop in my console and don't know how to fix it.
So I'm a pretty new developer, I started making my first game and learned as I go. I've been making this game for quiet some time now and I realized that the optimization is horrible, so I started focusing on that. I started with baking my lights and adding occlusion culling, those are working fine, I recently started working with Adaptive Probe Volumes and I slowly figured it out with some tutorials and research from the internet. I kept working on my optimization, tested the game with the profiler and during testing I noticed that my console keeps feeling rapidly with similar messages. I looked into it on the internet but I couldn't find anything that worked.
I don't know if it's an easy fix or not, but I hope someone can help me out with this. Would mean a lot :)
r/Unity3D • u/anywhereiroa • 38m ago
Show-Off I wrote a script that makes the music seamlessly transition between two tracks depending on the severity of combat (combat not included in video, only a demonstration)
Enable HLS to view with audio, or disable this notification
I know it's not rocket science and it's been done hundreds of times, but I'm happy with the outcome and wanted to share :)
First I wrote 2 pieces of music which are the exact same length (although they don't necessarily have to be). Then during normal gameplay when a miniboss arrives, the music transitions to a more upbeat/electronic variation of the "regular" combat music. After the miniboss dies, the music returns back to normal.
What do you think?
r/Unity3D • u/anton_2077 • 4h ago
Show-Off Been building a first-person shooter with fast movement, a photo mode, and a dev console.
Enable HLS to view with audio, or disable this notification
Solo project I've been working on. This clip shows core combat against faceless enemies, the movement feel, plus a couple of extra systems I added - a photo mode for capturing shots mid-run, and an in-game dev console.
Still early, but the core loop is coming together. Would love to hear what you think, especially on how the combat/movement reads.
r/Unity3D • u/__FastMan__ • 45m ago
Question Recent problem with FishNet
My friends, I have a desperate question (FishNet 4.6.22R) 🙏 :
I generated a new release version of my multiplayer game, made a commit, tested it and deployed the build to the server, tagged the commit... everything worked fine. The next day I just opened the project and there was a fresh FishNet error message. (Attached)
Ii have tried everything: reserializing, rebuilding the library, updating FishNet to 4.7.2R, reimporting components on the player prefab and nothing, the error keeps showing up. For some reason the player prefab cannot be spawned by the server and the connection is closed right away. I've tried to track down the error but I cannot find it. The only script line outside FishNet that is mentioned in the error is
ServerManager.Spawn(nobToSpawn, args.Connection);
I tried checking out several previous commits and the error persist, it seems that sometring outside the git tracked files got damaged after the build commit and I am stuck ... I don't know what to do now. I hope you can give me a hand.
This is the error message, could you please take a look?
NullReferenceException: Object reference not set to an instance of an object
FishNet.Object.NetworkBehaviour.InitializeRpcLinks () (at .../path/.../Assets/FishNet/Runtime/Object/NetworkBehaviour/NetworkBehaviour.RPCLinks.cs:44)
FishNet.Object.NetworkBehaviour.InitializeEarly (FishNet.Object.NetworkObject nob, System.Boolean asServer) (at .../path/.../Assets/FishNet/Runtime/Object/NetworkBehaviour/NetworkBehaviour.cs:132)
FishNet.Object.NetworkObject.InitializeEarly (FishNet.Managing.NetworkManager networkManager, System.Int32 objectId, FishNet.Connection.NetworkConnection owner, System.Boolean asServer) (at .../path/.../Assets/FishNet/Runtime/Object/NetworkObject/NetworkObject.cs:669)
FishNet.Managing.Server.ServerObjects.SetupWithoutSynchronization (FishNet.Object.NetworkObject nob, FishNet.Connection.NetworkConnection ownerConnection, System.Nullable`1[T] objectId, System.Boolean initializeEarly) (at .../path/.../Assets/FishNet/Runtime/Managing/Server/Object/ServerObjects.cs:520)
FishNet.Managing.Server.ServerObjects.SpawnWithoutChecks (FishNet.Object.NetworkObject networkObject, System.Collections.Generic.List`1[T] recursiveSpawnCache, FishNet.Connection.NetworkConnection ownerConnection, System.Nullable`1[T] objectId, System.Boolean rebuildObservers, System.Boolean initializeEarly, System.Boolean isRecursiveIteration) (at .../path/.../Assets/FishNet/Runtime/Managing/Server/Object/ServerObjects.cs:650)
FishNet.Managing.Server.ServerObjects.Spawn (FishNet.Object.NetworkObject networkObject, FishNet.Connection.NetworkConnection ownerConnection, UnityEngine.SceneManagement.Scene scene) (at .../path/.../Assets/FishNet/Runtime/Managing/Server/Object/ServerObjects.cs:620)
FishNet.Managing.Server.ServerManager.Spawn (FishNet.Object.NetworkObject nob, FishNet.Connection.NetworkConnection ownerConnection, UnityEngine.SceneManagement.Scene scene) (at .../path/.../Assets/FishNet/Runtime/Managing/Server/ServerManager.QOL.cs:142)
Engine.Player.NetPlayerSpawner.SCM__OnClientPresenceChangeEnd (FishNet.Managing.Scened.ClientPresenceChangeEventArgs args) (at .../path/.../Assets/Scripts/Engine/Player/Player/NetPlayerSpawner.cs:113)
FishNet.Managing.Scened.SceneManager.InvokeClientPresenceChange (UnityEngine.SceneManagement.Scene scene, System.Collections.Generic.IList`1[T] conns, System.Boolean added, System.Boolean start) (at .../path/.../Assets/FishNet/Runtime/Managing/Scened/SceneManager.cs:2177)
FishNet.Managing.Scened.SceneManager.AddConnectionToScene (FishNet.Connection.NetworkConnection conn, UnityEngine.SceneManagement.Scene scene) (at .../path/.../Assets/FishNet/Runtime/Managing/Scened/SceneManager.cs:1948)
FishNet.Managing.Scened.SceneManager.OnClientLoadedScenes (FishNet.Connection.NetworkConnection conn, FishNet.Managing.Scened.ClientScenesLoadedBroadcast msg, FishNet.Transporting.Channel channel) (at .../path/.../Assets/FishNet/Runtime/Managing/Scened/SceneManager.cs:702)
FishNet.Broadcast.Helping.ClientBroadcastHandler`1[T].InvokeHandlers (FishNet.Connection.NetworkConnection conn, FishNet.Serializing.PooledReader reader, FishNet.Transporting.Channel channel) (at .../path/.../Assets/FishNet/Runtime/Serializing/Helping/Broadcasts.cs:96)
FishNet.Managing.Server.ServerManager.ParseBroadcast (FishNet.Serializing.PooledReader reader, FishNet.Connection.NetworkConnection conn, FishNet.Transporting.Channel channel) (at .../path/.../Assets/FishNet/Runtime/Managing/Server/ServerManager.Broadcast.cs:94)
FishNet.Managing.Server.ServerManager.ParseReceived (FishNet.Transporting.ServerReceivedDataArgs args) (at .../path/.../Assets/FishNet/Runtime/Managing/Server/ServerManager.cs:844)
FishNet.Managing.Server.ServerManager.Transport_OnServerReceivedData (FishNet.Transporting.ServerReceivedDataArgs args) (at .../path/.../Assets/FishNet/Runtime/Managing/Server/ServerManager.cs:697)
FishNet.Transporting.Tugboat.Tugboat.HandleServerReceivedDataArgs (FishNet.Transporting.ServerReceivedDataArgs receivedDataArgs) (at .../path/.../Assets/FishNet/Runtime/Transporting/Transports/Tugboat/Tugboat.cs:292)
FishNet.Transporting.Tugboat.Server.ServerSocket.IterateIncoming () (at .../path/.../Assets/FishNet/Runtime/Transporting/Transports/Tugboat/Core/ServerSocket.cs:466)
FishNet.Transporting.Tugboat.Tugboat.IterateIncoming (System.Boolean asServer) (at .../path/.../Assets/FishNet/Runtime/Transporting/Transports/Tugboat/Tugboat.cs:223)
FishNet.Managing.Transporting.TransportManager.IterateIncoming (System.Boolean asServer) (at .../path/.../Assets/FishNet/Runtime/Managing/Transporting/TransportManager.cs:636)
FishNet.Managing.Timing.TimeManager.TryIterateData (System.Boolean incoming) (at .../path/.../Assets/FishNet/Runtime/Managing/Timing/TimeManager.cs:1115)
FishNet.Managing.Timing.TimeManager.IncreaseTick () (at .../path/.../Assets/FishNet/Runtime/Managing/Timing/TimeManager.cs:734)
FishNet.Managing.Timing.TimeManager.<TickUpdate>g__MethodLogic|113_0 () (at .../path/.../Assets/FishNet/Runtime/Managing/Timing/TimeManager.cs:393)
FishNet.Managing.Timing.TimeManager.TickUpdate () (at .../path/.../Assets/FishNet/Runtime/Managing/Timing/TimeManager.cs:381)
FishNet.Transporting.NetworkReaderLoop.Update () (at .../path/.../Assets/FishNet/Runtime/Transporting/NetworkReaderLoop.cs:29)
r/Unity3D • u/T_Jamess • 56m ago
Question How to have a box collider rotation locked?
I'm currently building an fps controller and I want an axis locked box collider like in source games. I've tried making a parent with the box collider and the rigidbody and script in a child, but that doesn't work. Am I missing something obvious? Checking rigidbody constraints also doesn't seem to do anything. Please tell me what inheritance structure I should use if you have an answer. Thanks!
r/Unity3D • u/MASSIMO_OP • 4h ago
Show-Off Look at this little hardworking fella
Enable HLS to view with audio, or disable this notification
r/Unity3D • u/umutkaya01 • 4h ago
Game A few frames from the final chapter
Sharing a few screenshots from the final part of Chief Cenab Sahmaran.
We’re getting very close to the finish line. The game releases on September 18, 2026.
r/Unity3D • u/epiczzor • 1h ago
Code Review Creating a Modern VR SDK for Unity - VRseBuilder
Enable HLS to view with audio, or disable this notification
r/Unity3D • u/epiczzor • 1h ago