재화 시스템

이도희·2022년 11월 13일
0

MSW SUPER HACKATHON 2022

목록 보기
2/5

“MSW X Super Hackathon 2022” 에 참가하여 개발한 프로젝트 중 맡은 개발 기능 구현을 진행하며 정리한 포스트입니다.


사용 플랫폼 : MSW
사용 언어: LUA


👉 맡은 파트 - 재화 시스템 Data Storage 기반으로 수정하기

❗ 필요한 기능
1. Data Storage에 저장되어 있는 재화 게임 시작 시 가져오기
2. 재화 업데이트 + 업데이트 시 Data Storage에 반영


MoneySystem이라는 logic을 정의해서 게임 전반적으로 사용할 수 있도록 구성하였다.

1. 게임 시작 시 재화 반영

1) Money 값을 가지고 있는 MoneyDataStorage를 정의한다.
2) 현재 Data Storage에 저장된 값이 없다면 가장 초기로 지정해놓은 값으로 초기화 한다.
3) 만약 저장되어 있는 값이 있다면 해당 값을 현재 currentMoney에 저장한다.
4) 관련된 UI들의 text도 동일하게 현재의 currentMoney로 업데이트 한다. (인벤토리, 상점, 메인)

😓 4)에서 주의할 점!

OnBeginPlay가 server only이기 때문에 UI 정보인 text component들을 바로 접근해서 수정하려고 하면 계속 nil 값이 나왔다.

Client 쪽에서 UI는 업데이트를 해주어야 하기 때문에 함수를 분리해서 Execution space에 차이를 줬다. (MSW에서 서버와 클라이언트 관련 어떻게 동작이 이루어지는지도 추후 포스트로 정리해야겠다.) 어쨌든 간략히 이 부분만 설명하면 서버에서 Client로 요청을 보내 client에서 실행하도록 하는 것이다! 그래서 실제로 해당 함수 처리는 클라이언트 쪽에서 하게 된다.

2. 재화 업데이트

재화 업데이트는 업데이트를 해야하는 곳에서 간단히 logic의 함수를 부르는 식으로 진행된다.
1) 간단하게 현재 변수에 넘겨 받은 업데이트 해야할 양만 더해주면 된다.
2) Data storage에 저장하기 위해서 execution space를 나누어 SaveMoney라는 함수를 사용했다.
3) 마지막으로 Text UI들도 업데이트 해주었다.

결과물

다음과 같이 필요한 Text들이 건물 구매 후 + 종료 후 재접속 시에도 제대로 반영되는 것을 확인할 수 있다.

+) 종종 재화 대신 Text라고 뜨는 경우가 있어 일부 내용 수정 (update soon)

profile
하나씩 심어 나가는 개발 농장🥕 (블로그 이전중)

2개의 댓글

comment-user-thumbnail
2023년 12월 7일

안녕하세요 글 잘봤습니다! 집에가서 테스트 해봐야겠습니다 상점시스템 글도 보고싶은데 아쉽게 글이 없네요

1개의 답글