Giter VIP home page Giter VIP logo

mfaxyz / unity-advanced-engineering-guide Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 64 KB

Unity Software Engineering Guide (Design Patterns, Software Architecture, Algorithms and Data Structure)

License: GNU Affero General Public License v3.0

architecture design-pattern design-patterns design-system game-development game-engine gamedev software-architecture software-design software-development software-engineer software-engineering software-testing unity unity-editor unity-package unity-scripts unity2d unity3d unity3d-plugin

unity-advanced-engineering-guide's Introduction

Unity-Software-Engineering-Guide

Software Engineering:

Related repositories

High-level software development topics like domain driven design, design patterns, and antipatterns.

SOLID Principles:

Single Responsiblity Principle:

A Module should be responsible for one thing and has one reason to change.

Open Closed Principle:

A module should be open for extention but closed for modification. We can solve this problem by using interfaces.

Liskov Substitution Principle:

An Object(Such as class) may be replaced by a sub-object(such as a class that extends the first class) without breaking the program. Derived classes should extend without replacing the functionality of old classes.

Interface Segregation Principle:

Classes should not be forced to depend on methods they do not use.

Dependency Inversion Principle:

High level parts of the system should not depend on low level parts of the system directly, instead they should depend on some kind of abstraction(interfaces)

Note:

So what is Dependency Injection? DI is a subtype of IoC (We will talk about it later) and is implemented by constructor injection, setter injection, or method injection. It’s a more specific implementation that focuses on the way objects obtain their dependencies. DI talks about how one object acquires dependency on another object through abstraction. DIP is a principle of the SOLID principles in Object-Oriented Programming. It’s about decoupling dependencies between high-level and low-level layers through shared abstractions. Dependency Injection is a form of Inversion of Control, but it doesn’t necessarily achieve much decoupling. Dependency Inversion is what achieves the decoupling, and is facilitated by using Dependency Injection with an Inversion of Control Container.

Articles:

SOLID C# Series' Articles

Youtube:

SOLID Unity3D by Jason Weimann

Unite Austin 2017 - S.O.L.I.D. by Unity

Practical Game Development by Infallible Code

S.O.L.I.D Design Patterns by Dapper Dino

Design Patterns:

Design pattern list: Object Pooling

Creational Design Patterns: Builder, Factories (Factory Method and Abstract Factory), Prototype and Singleton

Structrural Design Patterns: Adapter, Bridge, Composite, Decorator, Façade, Flyweight and Proxy

Behavioral Design Patterns: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Null Object, Observer, State, Strategy, Template Method, Visitor, Blackboard

Related Udemy Course: https://www.udemy.com/course/design-patterns-csharp-dotnet/

Youtube:

Game Programming Patterns by Infallible Code

Game Programming Patterns Tutorials by Unity

Game Programming Patterns by Jason Weimann

18 Key Design Patterns Every Developer Should Know:

18-oo-patterns

Architectural Patterns:

Architectural pattern list: service locator, layered, hexagonal, MVC, MVVM

Concurrency:

Multithreading:

Parallel Programming:

Related Udemy Course: Learn Parallel Programming with C# and .NET

Asynchronous Programming (vs Synchronous):

Clean Code:

Youtube:

Clean Code - Uncle Bob - all lessons

Test Driven Development:

Youtube:

Test-Driven Development (TDD) in Unity by Infallible Code

Inversion of Control (IoC)

It’s a programming principle that inverts the flow of control in an application. Instead of the programmer controlling the flow of a program, the external sources (framework, services, other components) take control of it. In the context of service containers, IoC is achieved by allowing the framework to do the binding and instantiation of dependencies.

Zenject by Infallible Code

Miscs:

Youtube:

Live Tutorials & Coding Sessions by Infallible Code

Productivity Assets for Unity by Infallible Code

Programming For Production iHeartGameDev

unity-advanced-engineering-guide's People

Contributors

mfaxyz avatar

Stargazers

theHSB avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.