Quick Notes & Explanations
loading
·
loading
·
I have tried to explain the architectures and optimization techniques that can be applied in projects developed in Unity along with my experiences. I hope it will be useful for those who examine them. Thank you to everyone who takes the time to read patiently.
13. Network Simulation
·2 mins·
loading
·
loading
This topic is a continuation of the previous one. Let’s continue by considering that we are running our game with 7 users at 10 FPS.
If we receive data traffic at 10 FPS, we will frequently experience lag in the game.
12. Photon PUN and Issues
·5 mins·
loading
·
loading
I don’t have an alternative system to recommend instead of Photon because most services have similar constraints. As discussed in the theory of constraints, measures are taken according to the constraints in each project, and these measures aim to maximize profit.
11. Addressables vs. Instantiate System
·3 mins·
loading
·
loading
What is Addressables? The Addressable Asset System provides an easy way to load/unload assets from memory based on an “address.” It simplifies asset management by making it easier to create and distribute content packages, reducing the complexity of managing assets.
10. MessagePipe vs. UnityEvent
·1 min·
loading
·
loading
In our games, we use structures like delegates, events, UnityEvent, etc., for instant communication in rapidly changing scenarios. However, because these occur and disappear “instantly,” they cause “instant” Garbage Allocation followed by Garbage Collection.
9. What is UniTask, and What Is It Not?
·1 min·
loading
·
loading
UniTask is a framework specifically developed for Unity. Like VContainer, it’s a system that preemptively solves potential issues we might encounter in Unity. It is not a new architecture or a newly discovered technology.
8. Synchronous and Asynchronous Concepts
·2 mins·
loading
·
loading
Synchronous Programming Most of the programs we write execute the code from top to bottom in the order it was written. Everything is done sequentially. For example, this code illustrates this:
7. What Are Zenject and VContainer Not?
·3 mins·
loading
·
loading
All of the systems mentioned above are frameworks. While I’ve provided examples specific to Unity, we could also include native C# frameworks like AutoFac, but these are systems adapted and optimized specifically for Unity.
6. What is SOLID, and What is It Not?
·1 min·
loading
·
loading
The following five principles, which we have previously explained, form our SOLID principles:
Single Responsibility Principle Open/Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle I won’t redefine these terms.
5. Choosing the Appropriate Architecture
·4 mins·
loading
·
loading
After the reminders about optimization in the first three sections, we can bring together the principles from the fourth section to develop an architecture that can be applied to our project.
4. Design Pattern Examples
·10 mins·
loading
·
loading
We can categorize Design Patterns under 3 main headings:
Architectural Patterns Examples: MVC (Model-View-Controller), SOLID, MVVM…
Design Patterns It is a specific Architectural Pattern, such as Singleton. Using it alone in a project is not sufficient, and optimization with several different patterns is necessary.
3. Why should we use architecture?
·3 mins·
loading
·
loading
One of the fundamental advantages of working with principles and architectures in our projects is that it allows us to benefit from the advantages of libraries and plugins developed specifically for those principles.
2. GC Alloc ve GC Collect
·2 mins·
loading
·
loading
In C# and some Object-Oriented Programming languages, there is the term Garbage Collector. However, in some mid-level programming languages, it is the programmer’s responsibility to remove objects that are no longer needed from memory.
1. Theory of Constraints & Games
·1 min·
loading
·
loading
Theory of Constraints suggests that every production system has a single constraint that limits the producer from unlimited production, and the goal of the system is to continuously maximize the efficiency of that constraint.