모든 클라이언트의 입력을 받은 후에만 게임 로직이 진행되므로 모든 클라이언트가 동일한 게임 상태를 보고 있도록 만들 수 있음. 턴제게임이 1/60초마다 한번씩 지속된다고 생각하면 이해가 편하다.
Simulation - 로직 돌리는 것
Presentation - 보여주는 것
서버가 통신할 때 커맨드를 매초 30프레임
디자인패턴중 하나
ex) DatabaseManager2를 만들고 싶을때 단 하나만 존재함을 보장하기 위해서 생성자를 내부에 if문으로 처리하여 코딩하는 방식
단축키 Ctrl + . 으로 button 등 기본 엔진에서 제공하는 클래스를 사용하려는데 사용하지 못할때 이 단축키를 사용하면 자동으로 기능을 제공하는 클래스를 찾아줌.
gitignore를 사용하면 git에 업로드하지 않을 요소를 지정해줄 수 있음.
예를들어 Visualstudio 설정같은 부분은 개발자마다 사용 방식이 다르기 때문에 이것을 git에 올릴필요 없으므로 gitignore파일에 추가하여 이를 막을 수 있다.
닷넷스파이더가 제공하는 코딩표준으로 작성할것
코딩표준
하드코딩이란 소스코드에 데이터를 직접 입력해서 저장하는 것을 말한다. 하드코딩이 많아지면 소스코드를 보고 그것의 의미를 단번에 파악하기 힘들어지고, 유지보수가 힘들어진다.
참고블로그
Adressable을 활용하면 패치를 진행할 때 항상 모든 파일을 패치하는 것이 아닌 변경된 파일만 패치하도록 만들 수 있다.
Unity는 기본적으로 업데이트 순서를 지정할 수 없는데, 이 프로젝트는 RTS 게임이기에 업데이트 순서를 지정해줄 필요가 있었고, 이것을 List자료형의 processes 클래스를 생성해 구현했다. 좀 더 코드분석과 공부가 필요.
상호참조를 피하기 위해 EventManager클래스를 활용해 중재자역할을 하게끔 구현했다.
Dictionary는 게임 개발에서 자주 쓰이는 자료구조이다.
Type(키)에 대한 Action을 저장할 수 있다.
Where T를 활용하면 T에 대한 제한을 걸 수 있다.
T는 IEventBase의 인터페이스를 반드시 구현해야함
main에서 EventManager.instance.SendEvent()라는 방식으로 사용되어있는데 클래스 생성하지 않고 메소드를 사용 가능한 것인가?