Unity Procedural Game Optimization

I am currently developing a 3d dungeon crawler which implements a procedural dungeon generation system which works perfectly fine. I am currently trying to optimize the game to the best of my abiltiy. These are some of the this I’ve implemented so far please let me know if you have any other suggestions:

  • Static Batching for all the generated rooms and all the generated decor using StaticBatchingUtility.Combine()
  • Occlusion Culling (though I am not sure if it works correctly because the dungeon is generated at runtime, maybe you have any suggestions on how to correctly implement it)
  • LOD Groups for each room prefab and decor object
  • Custom mesh colliders made in blender that have a low poly count for each object
  • Hard Shadows on all point lights, that are realtime, and currently using defferd lighting on the project settings. And the lights light up as you enter the room.
  • Quality settings are kept as default
  • Currently there is only a fps controller and the dungeon generator so there aren’t any other scripts that might be impacting performance
  • No effects or particle systems in the scene
  • All objects use the same material and is not cloned when the prefab is instantiated.

If you have any other suggentions I would really appreciate it. If you need any more info please don’t hesitate to ask. Thanks

Currently getting around 160 - 180 fps,

In a multi-player game where one player becomes invisible, is the data about the invisible player sent to the enemy game clients?

In my 3d FPS game, there is a feature where a player could have it’s character become invisible for some time. The character is only invisible, they’re still there and can move around: the other players can try predict where they are and shoot them, and if they succeed the invisible character becomes visible again.

I’m worried about cheaters using aim bots and I’m wondering how I should handle the invisible characters in this context.

Looking to build a game that uses names of Premier League teams – what are the steps required to stay compliant

I am looking to build a game that users would play weekly. In order for the game to make sense, I would have to display the names of the 20 Premier League teams playing on a weekly basis. I will not be using the names of players themselves. The game would require people to pay to contend for their share of a weekly pot of winnings.

The game would be similar to: https://fantasy.espn.com/games/english-premier-league-pickem-2020/make-picks

From a game design point of view, what are the implications of using realistic distances in an open world map?

I’m starting an open world game and the plan is to have a single "open world" map that should contain a medieval citadel (1.4 km/2 – taking as example Palmanova in Italy) and some countryside around it.

The plan is to delimit the map with a river and some hills.

What I realized so far is that most open-world games take a specific approach when it comes to size their areas, it’s unlikely you’ll ever find a realistically sized citadel, they will tend to be all pretty small, and it will take no more than a few minutes to run from one side to the other of it.

An example that comes to mind is The Witcher 3, the Novigrad/Velen map is 15.2 km2 but the city is approx 0.25km2, which is a lot smaller than what I plan to build for my map.

To walk from one side to the other of my citadel the player should take around 15 minutes (according to Google Maps), while, as I said, in most games you can run through a city in a matter of 1 or 2 minutes.

Keep in mind there will be no vehicles and I’d still like to have the countryside take most of the map area to keep everything proportioned and realistic.

The question is, is it a good idea to build such a "large" citadel? What gameplay issues could I face? How should I handle the fact that the countryside will end up being extremely huge (and empty?) if I want to keep it properly proportioned with the citadel?

How to temporarily set a game object active? [duplicate]

I’m trying to an use IEnumerator method called Wait() to temporarily enable and then wait, and disable a gameobject within a method. Basically I’m trying to create a muzzle flash within a shoot method, but whenever I add the muzzle.SetActive(false) to the method, it never activates in the first place. This code should work right?

void Shoot() {     muzzle.SetActive(true);     RaycastHit hit;     if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))     {         Debug.Log(hit.transform.name);          Target target = hit.transform.GetComponent<Target>();         if (target != null)         {             target.TakeDamage(damage);         }     }     Wait((float).1);     muzzle.SetActive(false); } 

Unity 2D Game: does transparency count as overdraw?

I’m working on a 16:9, 1920×1080, 2.5D point-and-click adventure game and I just today learned the word overdraw. I have a few questions, but first some details about the game:


Backgrounds are hand drawn, and broken up into layers. For instance, if there’s a room with a table, some chairs, and a lamp on the table, then I’ll have a sprite for each of those objects whenever I want the player to be able to walk in-front of or behind that object.

To make positioning of these objects consistent with what’s in photoshop, I’ve exported each layer as a full HD image with huge swaths of transparency. These images have a very small memory footprint because only a small portion of image is populated with non-transparency.


Animation is hand drawn. To make character position consistent across all characters, each animation is exported as full HD images with huge swaths of transparency. The characters reside at the bottom center of frame. I call it the anchor point. In point of fact, it’s where I put the pivot.

I’ve got all animations and backgrounds in sprite atlases to save on video memory. So far, it’s low.


Am I a huge idiot? Are these full screen images with lots of transparency going to be a big problem for me? The game is for mobile and PC and Switch.