'2016/10'에 해당되는 글 2건

  1. 2016.10.21 메세지 기반 프로그래밍 - 3 (1)
  2. 2016.10.05 [aws] GameLift Activating 상태에서 멈춤 해결하기 (1)
메세지 기반 프로그래밍은, 기존에 ~~Manager 등으로 강하게 커플링된 오브젝트간의 연결을 해소한다는데에 목적을 두고 있지만, 너무 메세지에 몰빵해버리면 오히려 불편한점도 생기기 마련이다.

예를들어 현재 플레이어의 체력같은 경우에는 여러가지 오브젝트들이 공유할 수 있다.
( 상태창 UI, 적군 인공지능, 펫 등...)

플레이어 오브젝트가 체력이 변할때마다 Change 메세지를 매번 발송해서 처리할 수도 있겠지만,, 
받는쪽에서도 번거롭게 수신자를 만들어야하고, 플레이어쪽에서도 변하는 모든 부분에서 발송 코드를 작성해야 한다. 분명 이러한 구조는 이전의 GameManager.playerHp 에 접근하는것보다 몇배는 더 불편하다.


이러한 구조적 불편함을 해소하기 위해서 
Rinity (https://github.com/pjc0247/Rinity2) 에서는 공유되는 전역변수 기능을 제공한다.

공유되는 변수는 기존의 매니저에 의한 전역 상태 / 그리고 메세징에 의한 루즈 커플링의 절충지대 역할을 한다.

공유되는 변수는 변수 그 자체를 하나의 오브젝트가 '소유' 하는것이 아닌, 그냥 공중에 존재하는 변수를 여러개의 오브젝트가 가져와서 사용하는 개념이다. 물론 공중에 떠다니는 각각의 변수를 식별하기 위해서 별도의 이름을 가진다.

공유되는 변수는 아래와 같은 모양을 가지며, 프로퍼티로 동작한다. 


이렇게만 작성하면 어떠한 오브젝트에서든지 KEY만 일치하면 값을 공유할 수 있다.


플레이어 오브젝트에서는 언제든지 값이 변할때마다 set 하면 되고, 가져다 쓰는 체력바 UI 등에서는 마치 원래부터 자기값이었다는듯이 클래스 내부의 프로퍼티를 사용하면 되니 굉장히 편리하다.




이전 메세징 방식처럼 값이 변경되는 순간순간마다 메세지를 받고 싶다면, 단순히 이전처럼 메세지를 구독하기만 하면 된다. 공유 변수의 set에 의한 메세지 발송은 Rinity 내부에서 자동으로 이루어진다.



'GameProgramming' 카테고리의 다른 글

피격 파편 효과 주기  (1) 2017.11.06
메세지 기반 프로그래밍 - 3  (1) 2016.10.21
메세지 기반 프로그래밍 2  (0) 2016.05.18
카드게임  (0) 2016.05.09
클릭 시 물결 효과 주기  (0) 2016.03.04
0~3 로 4방향 만들기  (0) 2016.03.03
Posted by pjc0247



SERVER_PROCESS_CRASHED
Server Process exited without calling process ending with exit code -532462766. (C:\game\Sample.exe a)






게임리프트 콘솔에 빌드를 업로드하고 플릿을 만들었는데 Activating 상태에서 넘어가질 않는다.

조금 더 기다리면 위와 같은 에러 이벤트를 볼 수 있다.


ProcessReady 함수만 제대로 호출되도 Active 상태로 전환될텐데, 아무래도 해당 함수가 호출이 안되서 계속 Activating 상태로 남아있는듯 보인다.



* ProcessReady 호출 이전에 프로그램이 죽는 포인트가 없는지 검사한다.

* 빠진 DLL이 없는지 검사한다. (DLL에서 사용하는 또다른 DLL도 있을 수 있으니 ilspy / dependency walker 등을 사용하자)

* VS 재배포 가능 패키지가 미리 설치된 이미지를 기반으로 할 수는 없는 것 같으니, 서버 빌드에 설치파일 포함시켜서 스크립트를 짜자

* vs2015의 경우 msvcXXX 말고도 concrt140, vcruntime140, ucrtbase 파일도 필요하다.

* 지원하는 OS가 Windows Server 2012 이기 때문에 닷넷은 4.5.x 까지 기본으로 돌아간다.



[가장 쉬운 방법은 ec2 인스턴스를 새로 만들고, 완전 클린상태에서 게임 빌드를 복붙해놓고 돌아가는지 안돌아가는지 체크한다. 그러면 왜 안돌아가는지까지도 볼 수 있다.]


* exit code : -1073741819 AccessViolation

                      -532462766 디펜던시 에러

Posted by pjc0247
TAG AWS