OOP 기초-> 코드 디자인 패턴->아키텍쳐 패턴
OOP면
클래스,객체,상속 다형성인데 뭐 이거야 그냥 하다보면 알게되는거고
코드 디자인 패턴은 유니티 가이드 있으니까 그거봐라
주로 코드 디자인 패턴 중 자주 쓰이는 건
생성(Object 생성에 관여)
팩토리,추상 팩토리,빌더,프로토 타입,싱글톤(최근에 여기에 서비스 로케이터 포함)
구조(Object 단위, 즉 오브젝트를 나누는데 관여)
어댑터, 브릿지, 데코레이터,퍼사드,플라이웨이트
행동(Object 책임 할당)
커맨드,이터레이터,모듈레이터,옵저버
코드 디자인 패턴은 복잡도 올려주고 쓸모 없다고 생각될 수 있는데 해외 커뮤니티랑 소통할려면 필수고
이후에 MVC, MVVM 같은 아키텍쳐 패턴을 배우는게 도움됨.
MVC-> 모델+뷰+컨트롤러
MVP-> 모델+뷰+진행자(Presneter)
MVVM->모델+뷰+ 뷰모델
MVC는 사용자 액션을 컨트롤러에 받아서, Model업데이트하고, 모델이 뷰를 보여주는거고(뷰와 컨트롤러를 결합한 설계)
MVP는 사용자 액션을 뷰를 통해서 받고, 뷰 데이터를 진행자에 요청, 진행자는 모델에게 데이터 요청(진행자는 뷰를 알고 있지만, 뷰는 진행자에 의존하지 않는 설계)
MVVM은 액션을 뷰에서 받고, 뷰에 액션 들어오면 커맨드 패턴으로 뷰 모델에 액션 전달하고, 뷰 모델은 모델에게 데이터 전달함(뷰 모델이 뷰와 모델간의 매개 역할을 하고, 뷰는 뷰 모델과 데이터 바인딩되서 UI랑 데이터 로직을 분리시킴)
MVC는 기본적으로 익혀두면 유니티에서 가장 자주 사용되는 아키텍쳐 배우고
보통 이순서로 배워라
그리고 C#의 꽃은 이벤트니까 이벤트, 액션 델리게이트는 기억해두고
대강 이정도 떼우면 이제는 자기와의 싸움이니까 열심히하셈
논란의 여지가 있겠지만 oop 안좋음 상속 이놈이 ㅈ같음 책에서 이야기 하는 걸 들으면 모든 것의 해결책 같지만 사실 근본적인 문제가 있는 구조임 그러니 디자인패턴이나 배우거 있어야하는거 그 근본문제를 해결못해서 우회해야하거든 배우기라도 쉬우면 몰라. 영어배우는데 문법 배우는 수준의 노력이 필요해
애초에 OOP 자체가 사실상 사회적 합의로 만들어진거라서 FP같이 엄밀한 정의로 이뤄진게 아닌거라 좀 모순적이긴한데 게임 엔진은 대부분 OOP 지향하라고ㅎ해서 OOP 적으로 짜야하긴함
생각보다 디자인패턴 적용된 코드 보기힘듬..회사 3개 다녀봤지만..
ㄹㅇㅋㅋ글킨한데 소통할려면 써야하긴함
내가 좋아하는 예시가 있음 정수 분수 실수 복소수가 있으면 oop언어는 2가지 방식으로 만들 수 있음 1.복소수를 상속해서 실수. 실수를 상속해서 분수. 분수를 상속해서 정수. 2.정수를 조립해서 분수. 분수를 조립해서 실수. 실수를 조립해서 복소수. 두가지 섞어쓰면 ddd문제 생김
나도 경력자지만 생성쪽 밖에 안써봄..
그래서 님이 만든 게임은 언제 해볼 수 있나요?
ㅁㄹ 나도 완성이나 할 수 있을지
그게 님 실력이겠죠
팩트만 말하노ㅋㅋ
OOP 아직도 찬양하는 놈이 있네
아직도 여전히 OOP가 주류고 이 글 자체가 보다시피 게임엔진 이야기인데 게임엔진은 베비 엔진 말고 모든 엔진이 OOP 적으로 설계되서 OOP 위주로 만들 수밖에 없음. ECS로 만드는건 개빡세고. 언리얼, 유니티 둘 다 OOP 설계임
Object/Class라는 개념이 있다고 모두 OOP인건 아님. 그런 논리라면 ECS도 OOP여야지. 지금껏 여러 게임회사에서 일해봤지만 실력 좋은 엔지니어가 OOP 얘기하는건 본적 없음
뭔 소리임 실력이랑 별개로 유니티랑 언리얼 문서랑 가이드보면 애초에 OOP로 작성되있고, OOP로 작성하길 권장함. 당장 플러그인 같은거 대부분 OOP 작성임. 유니티 게임엔진에서 유니티 프로그래밍 기초 가이드북에서도 OOP 패턴 쓰게 권장하고.
ECS는 OOP적으로 한계가 있어서 나온거고, 그리고 OOP는 당연히 일반적으로 내면화 되있는거니까 나올리가 없는거지 그걸 강조하는 거 자체가 일반적으로 초보 프로그래머때 떼는거니까. 좀 이상하게 알고 있는거 아님? ECS가 나온 배경은 OOP의 성능적인 퍼포먼스 문제라 나온거 맞음. 최초로 쓰였던 것이 '오버워치'에서 그렇게 말하고 있으니까. 문제는 게임엔진에서 기본적인 배경에서 OOP를 쓰라고 권장하는 배경적 사실과 맥락을 무시한채 쓰지말아야할 것으로 치부하진 말아야한다는거임
나도 FP나 DOP등을 다 어느정도 알고 있지만, 기본적으로 게임 엔진 설계 자체가 OOP 가이드 되있다는 당연한 사실을 바탕으로 알고 있는거고, 처음 배우는 사람한테 당연히 기초를 알려줘야지 지 알고 있는 지식만 나열하는건 올바른 교수법이 아님. 내가 이정도 알고 있다는 잘난척일뿐.
당장 유니티에서 공식 가이드북으로 '게임 프로그래밍 패턴으로 코드 작성 스킬 업그레이드 하기' 이게 공식 책자고, 언리얼 이번에 게임잼에서 나온 플러그인들도 OOP 기반임. 당연히 알아야하는거니까 이야기를 안하는것뿐. 그것이 필요 없다는것은 아님.
그냥 필요할때마다 갖다쓰는거지 모든걸 숙지 할 필요는 없음 다 기억 안나기도 하고 ㅇㅇ
OOP가 만능은 아닌갑니