대형 프로젝트 - C# + 유니티로 만드는 MMORPG 게임 개발/(6) 라이브서비스

2D MMO 라이브 서비스 - (1 - 6) Hp 연동 (2)

monstro 2025. 9. 9. 11:51
728x90
반응형

- 개요

이전에 언급했던 문제 중 하나인 단계적인 처리가 이뤄지지 않는 문제를 수정해보겠습니다.

단계적인 처리는 다음과 같이 이루어져 수행합니다.

  • GameRoom에서 Db로 Job을 전달
  • Db에서 Job을 처리
  • 처리한 결과에 따라 GameRoom에서 작업

 

1) DbTransaction 클래스

 

JobSerializer 클래스를 상속받은 DbTransaction 클래스를 위와 같이 생성하였습니다.

Instance 프로퍼티를 통해 static 객체를 사용하여 작업을 수행할 수 있습니다.

 

 

SavePlayerStatus_AllInOne 함수를 위와 같이 추가하였습니다.

해당 함수는 단계적인 처리를 한번에 처리하는 용도로 사용합니다.

로직의 구성은 위와 같이 Job 생성 - Job 처리 - 처리 결과에 따라 작업으로 구성되어 있습니다.

 

 

단계적인 처리를 각각 수행하는 3개의 함수를 위와 같이 추가하였습니다.

  • SavePlayerStatus_Step1 함수 : Job 생성
  • SavePlayerStatus_Step2 함수 : Db에서 Job 처리
  • SavePlayerStatus_Step3 함수 : 처리 결과에 따라 작업 수행

 

2) Player 클래스

 

OnLeaveGame 함수를 위와 같이 수정하였습니다.

따라서 Player에서 한번에 진행하는 것이 아닌, GameRoom - Db 순서로 단계적으로 처리하게 됩니다.

 

3) 메인 프로그램 클래스

 

DbTransaction의 Instance로부터 Flush 함수를 호출하여 저장된 Job을 처리하도록 수정하였습니다.

 

- 최종 실행 결과

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

 

728x90
반응형