본문 바로가기

ETC

Multi play game의 server 형태와 그 특징 비동기형 Multi play Game Web browser 기반의 PC game이나 초창기 mobile game에서 많이 볼수 있는 server로서Puzzle game이나 farm game 처럼 player사이의 직접적인 상호작용이 거의 없거나 상호작용이 있다고 하더라도실시간으로 player의 상태를 동기화 할 필요가 없는 game에서 많이 사용된다. 예를들어 상대방과 같은 시점에 동시에 play하지 않아도 되고, 상대방의 data역시 항상 최근의 상태를 반영하지 않아도상호작용이 가능한 약한 multi play요소를 가지고 있는 게임들 Request-Reply 기반의 message 교환 Server는 client의 request를 처리하고 처리 결과를 client에게 돌려주는 방식으로 구현한다.Messa..
Dedicated Server / P2P Server / Listen Server Dedicated Server 모든 client가 1개의 전용server를 중심으로 data를 주고받는다.(Client - Server구조 기반)현재 MMORPG나 Online Game의 24시간 돌아가는 선택형 server가 대표적인 예 작동방식은 Client(User)가 field에 있는 상대방(다른 clinet, user)을 공격했다고 하면공격했다는 data를 server에 보내게 되고 server에서 피격판졍, 미스판정을 확정하여 다시 모든 client에게 보내게 된다. 즉 server가 게임 대부분의 판정을 처리한다. 장점 Client의 모든 data의 감시가 가능하다.Online game에서 불법프로그램을 사용하여 game을 진행한다면 전용server log에 기록이 되고 추후 user들의 신..
Network Transport / RPC Network Transport Web browser에서 사용되는 HTTP처럼 network가 사용하는 language RPC(Remote Procedure Call, 원격 절차 호출) Program이 network상의 다른 컴퓨터에 위치하고 있는 program에 service를 request하는데 사용되는 protocolRPC는 client / server model을 사용하는데, service를 request하는 program이 client이고 service를 제공하는 program이 server이다.request하는 program이 원격절차의 처리결과가 반환될때까지 일시정지 되어야 하는 Synchronous운영를 사용한다.
Mark and Sweep / Copying GC Mark and Sweep Mark and Sweep은 GC Algorithm에서도 시초가 되는 algorithm이며 가장 간단한 GC방법이다.이름만 살펴보면 mark, sweep로 알 수 있는데 조금 더 풀어보면 memory가 부족하거나 사용하지 않는 memory를 없애야 할 떄 사용하는 memory를 mark하고 표시가 해제된 memory 영역을 sweep하여 청소하는 방식이다. Application memory에서 새롭게 object가 생성되었을 때의 상태 표시이다.상자들에 붙어 있는 초록색 번개는 사용중인 object를 mark한 것이다.보통은 1개의 Object당 1bit를 사용한다. 오랜시간동안 GC가 sweep을 하지 않아 사용되지 않는 object를 청소하려 했으나 아무것도 없어 그냥 넘어..
IOCP IOCP(I/O Completion Port) 멀티스레드 윈속서버 프로그램의 경우 user한명당 thread가 1개씩 할당이 된다. 사용자수가 많아지면 thread의 동적생성과 thread간의 잦은 context switching으로 인한 overhead가 크게 증가한다. 이러한 점을 극복하기 위해 IOCP가 만들어졌다. IOCP는 하나의 thread가 하나 이상의 user request를 처리할 수 있도록 해준다. 즉 thread의 개수를 줄여 context switching의 횟수를 줄여 비용을 절감하는 개념이다. Multi thread programming에서 유용하게 사용할 수 있으며 그중에서도 socket이나 file, mail slot, Pipe와 같은 입출력 관련 프로그램에서 유용하게 사용된..
Unity에서의 Variants란? Asset bundle을 공부하다보니 Variants라는 단어가 계속나왔다. 사전에 찾아보니 변종이라는데 보니 Asset bundle뿐만이 아니라 shader나 다른곳에서도 Asset bundle variants, Shader variants, Prefab Variants 등 여러곳에서 사용되는 단어였다. Prefab Variants는 우선 프리팹 변종 (Prefab Variants): 유연한 프로퍼티프리팹 변종(Prefab Variants)은 특정 프리팹에 대한 미리 지정된 여러 개의 차이(variations)들을 발생시키는 용도로 적합하다.기본적으로 프리팹 변종은 특정 Prefab의 오브젝트들과 프로퍼티들을 상속한다. 그러나 동시에, 사용자는 해당 프로퍼티를 오버라이드하고 신규 컴포넌트나 GameOb..
Unity UnityAction과 Reference Count 궁금점 유니티의 UnitAction객체를 사용하는데 있어서 궁금증이 생겼다. UnityAction은 우선 내부적으론 C#의 델리게이트형식으로 사용되고 있었으며 UnityAction 델리게이트에 추가한 객체가 null값을 대입해도 제대로 작동할지가 궁금하였다. null값을 넣으면 해당 객체는 GC에서 수집해가서 수집된 이후에는 UnityAction이 엉뚱한 값을 가지고 있을거라 생각했었다. TestT testclass; UnityAction uAction; void Start () { testclass = new TestT(); uAction += testclass.PrintA; // testclass 멤버변수 a값을 출력하는 함수 uAction.Invoke(); testclass = null; //여기서 GC가..
Get방식과 Post방식 Get방식 클라이언트에서 서버로 데이터를 전송할 때, 주소 뒤에 '이름', '값' 이 결합된 스트링 형태로 전달한다.주소창에 쿼리스트링이 그대로보여져 보안성이 낮다.길이에 제한이 있다.(전송 데이터의 한계가 있다.)psot방식보다 상대적으로 전송속도가 빠르다. ex) 네이버에 돼지를 검색하면 나오는 http 주소https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=돼지 Post방식 일정 크기 이상의 데이터를 보내야 할 때 사용한다.서버로 보내기 전에 인코딩하고, 전송 후 서버에서는 다시 디코딩작업을 한다.주소창에 전송하는 데이터의 정보가 노출되지않아 Get방식에 비해 보안성이 높다.속도가 Get보다 느리다.쿼리스트링(문자열)데이터 뿐만..