Unity_본캠프

[내일배움캠프 3주차] TextRPG 팀플

티백고래 2025. 4. 28. 00:19

 

1주차에 혼자서도 제법 많이 했다고 자신 만만했던 나.

:아ㅋㅋ 1주차 했던 거랑 별 차이 없네 퀘스트랑 던전만 하면 되곘네 ㅋㅋ

 

 

어쩌다보니 토요일까지 자진해서 팀원들과 코드 수정하고 있는 나

: 여기 오류가…여기 버그……얘 지금 데이터 못 받아 오는데요…?

 

하지만 어떻게든 해냈습니다. 우리 팀원들 짱.

 

 

첫주차 TextRPG와는 격이 다른 이 스크립트 수...

정말 이런저런 기능들이 다 같이 들어있다.

무려 기획서도 있다. 짱!

 

 

구현한 내용들은 다음과 같다.

1. 캐릭터 제작(이름과 직업을 넣을 수 있다. 6개의 다른 직업이 존재한다.)

2. 인벤토리(구매한 아이템을 보고, 장착할 수 있다. 장착 여부도 확인 가능. 소모품도 사용 가능.) 

3. 상점 (장비와 소모품을 구매할 수 있으며, 합쳐서 섞여있지 않고 별도로 구분됨. 아이템 판매 가능.)

4. 직업(1과 연계, 6개의 직업, 각 직업당 3개씩 스킬이 배정됨. 2개의 액티브와 1개의 패시브 스킬. 특정 직업은 보상 골드와 아이템 판매가가 20% 증가하는 패시브를 가지고 있음!)

5. 던전 (스테이지 별로 다른 레벨의 몬스터. 마지막 스테이지의 보스 몬스터를 쓰러트릴 경우 사실상 게임 클리어.)

6. 퀘스트 (각 스테이지를 클리어하는 퀘스트를 받고, 완료하여 보상을 수령받을 수 있음.)
7. 칭호 (조건에 따라 칭호가 열림. 장착-해제 가능)

8. 저장 (지금까지의 내역을 저장하고, 게임을 종료시킴)

9. 휴식 (돈을 주고 체력을 회복할 수 있음.)

 

정말...뭔가 많은 일이 있었다.

(원래 내용은 이 내용 아닙니다. 자세한 내용은 원피스)

 

오류는 정말 여러 곳에서 일어났다.

바로 어제까지만 해도 몬스터한테서 드랍되는 아이템들 중, 오롯이 '판매용'으로만 드랍되는 아이템들의 가격이 전부 0이 되고 다른 값도 전부 '기본값'으로 나오는 현상이 있었다.

정보를 담은 '아이템 리스트'와, 그 '아이템 리스트'를 불러들일 함수가 서로 데이터가 연결이 되지 않아 발생한 문제였다. (물론, 최종적으로 그걸 불러들이는 곳에도 오타가 있었다. 수정했다...)

 

본래는 이렇게 기본자만 적혀있던 상태였고, 해당 정보를 받아들일 매개변수도 string값인 아이템이름이었다. 이로인해 발생한 문제가 다음의 둘.

1. 오롯이 '이름'만으로 다른 '리스트'에 있는 아이템의 데이터를 연결할 수는 없다.

2. 심지어 그 '이름'도 오타가 생기면 정상적으로 데이터를 불러올 수 없다.

 

2번은 오타를 수정하면 되는 일이었으니 간단하게 해결 되었다. 특정 몬스터한테서 특정 아이템만 떨어지게 하는 로직이기도 했고, 이미 완성 끝자락인 곳에서 뜯어 고칠 수도 없었다. (사실, 어떻게 뜯어 고쳐야할지 감도 안 왔다.)

그러니 중점으로 생각한 것은 1번이다. 물론, '데이터'를 연결해도 제대로 작동하지 않으면 다른 방법을 찾아야 했을 것이다.

 

하지만 그 상황에서는 다행히 저 위의 '기본값'만은 불러올 수 있던 상태였기에, 아이템 리스트를 불러올 함수와 최종적으로 아이템을 출력할 요소 사이에는 문제가 없음을 확인한 상태였다. 즉, 데이터만 불러올 수 있다면 해결할 수 있는 상황.

그래서 난 아이템 리스트를 읽어오는 방향을 선택했다.

RewardInventory의 내용을 rewardItem 이라는 이름 아래에 전부 때려 박았다.

item으로 이미 만들어진 '이름'과, 몬스터가 드랍할 '아이템'의 이름이 일치할 경우, 그 내용을 rewardItem에 불러와서 new Weapons에 그 정보를 다다다닥 집어넣는 형태다.

이러니까 단번에 아이템의 필요한 요소들이 다 들어갔고, 판매도 정상적으로 되었다. 열심히 만든 아이템 리스트인데, 정작 하나도 못 쓰면 아까운 걸....

 

스킬도 SkillOwner인 Key값을 미리 받아와야 하기 때문에, 전투 시작할 때 즉시 스킬오너를 세팅하도록 만들어두었다.

만약 스킬 사용자가 여럿이 된다면, 각 턴마다 SkillOwner를 재정의 해주면 된다. (가령, 에너미에게 스킬이 있는 경우다.)

Key값으로 사용할 SkillOwner에 저장되는 내용물은 'SkillOwner'라는 string값이 아니라, 'TextRPG.Character 로 만들어진 character'라는 요소 그 자체이기 때문이다.

 

후기

 

좀 더 게임다운 게임을 만든 것 같다는 느낌이 든다.

그리고 미니프로젝트가 정말 미니프로젝트였구나(...)라는 느낌도 느꼈다.

분명 미니프로젝트 할 당시에는 이거 미니 아니잖아요! 이거 미니 아니잖아요! 했는데……걘 그래도 했던 거 그대로 따라하면 필요한 건 다 할 수 있기라도 했지. (그래서 미니였나보다)

다음주! 월요일은 지금까지 만든 게임을 발표하는 시간이며, 화요일부터 Unity 작업이 들어간다. 

드디어 검은건 화면이오 하얀건 글씨...에서 벗어날 수 있다. (아니다. Unity에서도 script는 많이 쓴다.)

하지만 유니티. 이미지. 넣을 수 있다. 야호!!!!