디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[일반] [연재] 인디게임 개발 연재 - 10. 장비 효과와 인벤토리

겜스갓흥엔진갤로그로 이동합니다. 2019.07.07 21:34:48
조회 9474 추천 35 댓글 89
														


viewimage.php?id=2cb2d521e4df3d&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde36225ec20b9d76e1f28e773360ebd1f46a09c17665bd7fbefb301c1bedb


1. 지형만들기 https://gall.dcinside.com/mgallery/board/view/?id=aoegame&no=6611335&t

2. 링크 움직이기 https://gall.dcinside.com/mgallery/board/view/?id=aoegame&no=6622888

3. 참피의 행동패턴 https://gall.dcinside.com/mgallery/board/view/?id=aoegame&no=6638982

4. 샌즈 오류, 그래픽의 질 상향 https://gall.dcinside.com/mgallery/board/view/?id=aoegame&no=6650423

5. 공격, 통피분신술 https://gall.dcinside.com/mgallery/board/view/?id=aoegame&no=6662892

6. 시체,이지,"큰사람" https://gall.dcinside.com/mgallery/board/view/?id=aoegame&no=6696778

7. 세계의 확장 https://gall.dcinside.com/mgallery/board/view/?id=aoegame&no=7876684&exception_mode=recommend&page=1

8. 룸의객체화, 지형 https://gall.dcinside.com/mgallery/board/view/?id=aoegame&no=8154389&exception_mode=recommend&page=1

9. 체력과 아이템슬롯 https://gall.dcinside.com/mgallery/board/view?id=aoegame&no=8190295



"돌죽은 태산같이 높은 게임"

"돌죽몽 함께하겠다"




저번시간에는 체력 시스템을 만들고 장비 슬롯을 만들고 끝났다.

오늘은 착용한 장비스텟을 플레이어가 사용하고, 인벤토리를 제작하도록 하겠다.

연재 제목이 바뀐 이유는 게임의 완성본의 이름이 바뀔수도 있기 때문이다.




viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94a953756402cfb0405e49a5a97f59b4759ec03cd3026842a13b2a




장비 아이템, 기타 효과 등등으로 추가되는 변수들을 선언해준다.

이러한 작업 없이 바로 추가체력을 체력 변수에 더해버리면,

어디까지가 원래체력이고 어디부터 추가체력인지 확인할 방법이 없어지기 때문에, 두 변수는 분리되어야 한다.






viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94e70e2eaba61cf3c3ef2c5fae6268d51899cb05f1ec1b





추가되는 변수가 늘어난만큼 아이템이 가지고 있는 변수 수도 늘어난다.






viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94a953756402cfb0405e49a5a97f59b420c3963dbc6231a3681aa2





아이템이 가지고 있는 변수 수가 늘어남에 따라 데이터베이스에서 아이템의 정보를 읽어오는 인자수도 늘어나게된다.






viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94e70e2eaba61cf3c3ef2c5ca864628c48cec905d3af23





우리는 머리, 손, 발, 몸, 무기, 벽파괴의 6개의 슬롯을 사용한다. 즉 저렇게 아이템마다 정보를 읽어오는 짓을 6번이나 반복해야 한다는 것이다.

저걸 죄다 코드로 썼다간 가독성이 십창날것이 자명하므로 스크립트로 따로 빼어 재활용이 가능하게 한다.







viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94a953756402cfb0405e49a5a97f59be75c5c13f8db431a34d02af





저번시간에는 아이템이 생성되자마자 비활성화 시켰었다. 하지만 이런식으로 하면 문제가 하나 생기게 되는데.

obj_item이 자기의 아이템 넘버를 확인하고 그 넘버에 대응하는 정보를 데이터베이스에서 불러오기 전에 비활성화 되어버려 타입이 error가 되는 문제점이다.

오류를 해소하기 위하여 플레이어가 인스턴트를 비활성화 시키는것이 아닌, 아이템 본인이 자신의 정보를 불러온다음 비활성화 시키도록 바꾸었다.


그리고 각자 부위에 해당하는 아이템의 추가스텟들을 불러온다. 이것은 일종의 갱신으로

우리가 처음 load_item_function 스크립트를 짤때 ==가 아닌 +=를 썼음을 상기하자

아이템에 변화가 생길때마다 플레이어가 그 정보를 갱신해 받아와야 하는데 그때마다 +가 되버리면 스텟이 솟아올라버리므로

갱신할때마다 모든 스텟을 0으로 내린뒤 다시 받아오도록 한다.




viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94e70e2eaba61cf3c3ef2c58fa3734dc4fcccd0538562f




겜스 디버그모드로 변수 캡쳐를 해보니 제대로 불러와 진것이 확인되었다.





viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94e70e2eaba61cf3c3ef2c0cf83035db4c9a9905c68f79




저 추가 체력과 베리어가 작동하게 하는것은 아주 간단하다. 그냥 최대 체력, 베리어 제한을 기본 hp + 추가 hp로 바꿔주면 된다.





viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94e70e2eaba61cf3c3ef2c0efc6132d9419b9f051bf468





방어력 또한 적용시키기 간단하다.

다른 게임들은 방어력에 대해 아주 복잡한 공식을 사용하곤 하지만 나는 그냥 심플하게 데미지를 받을때 방어력 만큼 제하도록 짰다.






viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94a953756402cfb0405e49a5a97f59e67596963e286c8c7d089fd3





무브 포인트를 주는 주체는 플레이어가 아니라 주사위 애니메이션이므로 여기서 손을 본다. 연재 장장 4개월 만에 이 오브젝트를 다시 열어봤다;


추가 공격력은 주사위를 던질때마다 기본적으로 보정이 되도록 설계를 해놓긴 했지만

언제 한번 공격 관련 로직을 전부 갈아 엎을 예정이므로 지금은 손대지 않겠다.





viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94e70e2eaba61cf3c3ef2c5cfc3333dd41c8c9054b084b




체력에 방어력이 적용되어 쉴드가 3이 깎일때 체력은 3이 깎이는 것을 확인할수있다.






viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94e70e2eaba61cf3c3ef2c0cac3733d44a95cd050b183b





다음은 인벤토리를 만들겠다. 먼저 인벤토리를 켜고 닫을수 있는 버튼의 스프라이트를 제작해 주었다.

보통 돌죽에서 스프라이트를 가져오지만, 그렇지 않을때는 https://opengameart.org/ 여기에서 에셋을 구해온다.






viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94a953756402cfb0405e49a5a97f59b02197c56bac9846fe6a7e16





저번 시간에 만들었던 장비창 버튼과 대충 비슷하다. 장비창 버튼을 복붙해온 다음 위치만 바꿔주고 코드의 속을 비워버렸다.






viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94e70e2eaba61cf3c3ef2c5af56467db18959c057df6d2





대충 장비 버튼 아래에 위치하도록 했다.






viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94a953756402cfb0405e49a5a97f59be2192913495514c4ff2e972





아이템 슬롯은 가로 6칸 세로 2칸을 줄것이다.

9년간 겜스 쓰다가 세삼 깨달은건데 겜스는 C랑 다르게 칼러마이즈가 아니라 로우와이즈 형식의 맵핑을 한다...

아 애미 ㅋㅋ 9년간 헛배웠네 ㅋㅋ





viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94e70e2eaba61cf3c3ef2c0dfa6835de1b9c9e059ce905





장비창의 변수를 확인해서 장비창이 열려있을땐 인벤토리가 열리지 않게,

인벤토리가 열려있려 있을땐 장비창이 열리지 않게 한다.






viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94e70e2eaba61cf3c3ef2c0bae3461d41ace9105abeaa1





아니 씨발 이거 또 이렇게 찍혔네 왜이래 대체?






viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94a953756402cfb0405e49a5a97f59e320c3c33c3a05b665f64d6b





인벤토리 슬롯을 나타내는 변수는 인벤토리 버튼에 배정해준다.


여기서 의문이 있을수 있다. 인벤토리를 가지는 주체는 플레이어 인데 어째서 변수는 버튼에게 주는가?

사실 인벤토리를 가지는 주체는 어디가 되든 상관이 없다.

인벤토리는 단적으로 불렀을때 제대로 불려오고 저장할때 잘 저장되기만 하면 장땡이기 때문이다.

인벤토리에 저장된 아이템이 플레이어와 상호작용하는것이지

인벤토리 자체는 플레이어와 전혀 상호작용하지 않는다.


인벤토리 버튼을 클릭해 인벤토리를 불러옴 -> 불러온 인벤토리에 들어있는 아이템을 사용함 -> 인벤토리를 닫음


플레이어가 끼어들 필요는 없다. 고로 인벤토리 저장을 버튼에다가 해놓아도 무방하다.



덤으로 겜스는 배열을 선언할때 a 10 = 0 이렇게만 해두면 a 0~10 가 전부 0으로 알아서 선언되지만 //도대체 왜 대괄호를 넣으면 글이 반갈죽당하는 거냐?

(0~9까지 선언되는 c와 다르다!

c는 컴파일러에게 a 라는 공간 10개를 쓸거라고 알려주는 의미라면,

겜스에서는 a 10 은 내가 쓸건데 그 아래에 있는 0~9까지 나머지 빈공간은 니가 알아서 선언해!

같은 의미이기 때문이다.)

2차원 배열에서 a 5,1 이렇게 선언할시 a 0~4 ,a 5,1 만 선언되기 때문에 저런식으로 for문을 사용해 선언해야한다.





viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94e70e2eaba61cf3c3ef2c08f869678f49c89f05cb47d5





인벤토리에 아이템을 넣을땐, 인벤토리가 비어있는지 확인해야 하고, 인벤토리의 빈공간의 위치도 찾아야한다.

이것을 따로 스크립트를 빼, 인벤토리에 아이템을 집어 넣을때마다 사용토록한다.






viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94a953756402cfb0405e49a5a97f59b42392c03a5cc79ba5c23d94




빠른 테스트를 위해 아이템 코드를 입력해서 인벤토리에 바로 아이템을 받을수 있는 콘솔 명령어를 작성한다.

개발자 콘솔? 그딴거 지원 안해준다 콘솔 쓰고 싶으면 니가 만들어서 써야한다.





viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94a953756402cfb0405e49a5a97f59e4229f94355144013ef0afeb




이런식으로...





viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94e70e2eaba61cf3c3ef2c0ffe6469da49c8c905ca2f7c





인벤토리에 검을 넣어 보았다.

게임 출시 시점에서는 아마도 가방에 장비 아이템은 못들어갈 것 같다만 아이템은 아이템이니 넣을수는 있다.






viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94a953756402cfb0405e49a5a97f59e2259491348d32753bbab932





어제 만들었던 장비창이 좀 허전해 보여서 장비 옆에 추가로 얻고 있는 능력치들도 나오도록 드로우를 짜주었다.

draw_text에서 #이 c의 개행문자 ( ) 역할을 한다는건 3년전 겜스 포럼 보다가 우연히 알았다...

요요 헬프 페이지에 draw_text만 쳐봤어도 알았던건데.... 따흐흑 쓸려면 비틱 카페에서 독학해야되는 병신엔진






viewimage.php?id=2ab2d727e9de07a561b3d9bb0f&no=24b0d769e1d32ca73fee8ffa11d02831a17f4634ed1b2080eb0e1d464275fde562c44225ae75ff553a1bf2aa94e70e2eaba61cf3c3ef2c5dac6966dd1d9dce05557b1e





아무튼 조금 더 게임같은 모습에 한발짝 다가섰다.





다음시간엔 소모품, 아이템 사용 UI 등등을 만들어 오도록 하겠다...


자동등록방지

추천 비추천

35

고정닉 15

2

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
2858 설문 SNS로 싸우면 절대 안 질 것 같은 고집 있는 스타는? 운영자 24/05/06 - -
26117670 공지 신문고 [27] 실 성갤로그로 이동합니다. 24.05.06 467 2
25963616 공지 2024년 볼만한 게임쇼케이스 및 시상식 [62] 실 성갤로그로 이동합니다. 24.04.14 21251 48
21263018 공지 중세게임 갤러리는 게임관련 갤러리 입니다 [309] 실 성갤로그로 이동합니다. 22.06.16 59844198 136
26120067 일반 얘네 왤케 귀여움 이세모갤로그로 이동합니다. 05:17 1 0
26120066 일반 쥬부 오레오 허스스턴 젠세츠니 츠레테이테 ㅇㅇ(118.221) 05:17 4 0
26120065 일반 하데스2는 스위치 출시하면 사야겠다 올뺌갤로그로 이동합니다. 05:17 7 0
26120064 일반 [1] ㅇㅇ(118.235) 05:16 6 0
26120063 일반 클라나드 이 그림체는 진짜 쉽지않은듯... [5] 중갤고닉갤로그로 이동합니다. 05:15 46 0
26120062 일반 ㅇㅇ(118.235) 05:15 3 0
26120061 일반 중갤 블아그만까 ㅇㅇ갤로그로 이동합니다. 05:15 12 0
26120060 일반 일본 vs 미국 ㅇㅇ갤로그로 이동합니다. 05:14 13 0
26120059 일반 자고일어났더니 하데스2 기습출시뭐임 [1] 중갤고닉갤로그로 이동합니다. 05:14 28 0
26120058 일반 뜌땨뜌땨 뜌땨이뜌 [1] 개씨발GOAT갤로그로 이동합니다. 05:14 12 0
26120057 일반 줌빔이들 퀴즈퀴즈 <라는게임기억남? ㅇㅇ(182.222) 05:13 10 0
26120055 일반 중붕이 길가다 초간지 게이밍차량 발견.. [5] ㅇㅇ(118.220) 05:12 53 0
26120054 일반 스텔라블레이드 이브 스킨수트 코스플레이 [3] ㅇㅇ(39.113) 05:10 63 1
26120053 일반 눈물 젖은 인기없는 모델러의 삶 [9] BBiyagi갤로그로 이동합니다. 05:09 95 0
26120052 일반 마우스 잡는손 교정하는법 있을까 [1] 벨쨩갤로그로 이동합니다. 05:09 54 0
26120051 일반 중갤 퀴즈.jpg [2] ㅇㅇ(218.50) 05:08 62 1
26120050 일반 아 시발 뱅가드 << 존나 찝찝하네 [4] ㅇㅇ(103.237) 05:06 87 0
26120049 일반 하데스2 블랙할카스 [3] ㅇㅇ(1.224) 05:06 66 0
26120048 일반 지 팬티 냄새맡고 발정하는 년.jpg [2] ㅇㅇ(218.50) 05:05 162 0
26120047 일반 디코 알림 갑자기 존나 오는데 뭐지 ㅇㅇ(112.186) 05:05 24 0
26120046 일반 우우 학교가기 싫우... [2] ㅇㅇ갤로그로 이동합니다. 05:05 40 0
26120045 일반 몬헌은 뭐 하루종일 때려야되냐 [2] ㅇㅇ(118.37) 05:03 64 0
26120044 일반 사펑 개씹ㅈ같은광고..sibal [2] ㅇㅇ갤로그로 이동합니다. 05:02 76 0
26120043 일반 중붕이들 뜌땨이 메이커 근황 [8] 개씨발GOAT갤로그로 이동합니다. 05:02 130 0
26120042 일반 하데스 개발자는 흑인화 왤케 좋아하냐? [1] ㅇㅇ(222.238) 05:02 49 0
26120041 일반 ㄴ고아같으면 개추ㅋㅋ ㅇㅇ(118.235) 05:01 13 0
26120040 일반 스블 뭐냐 진짜 [3] ㅇㅇ갤로그로 이동합니다. 05:01 63 0
26120039 일반 롤 삭제함 [3] ㅇㅇ(103.237) 05:00 75 0
26120038 일반 크로노아크 <----개똥쓰레기 겜임? ㄷㄷㄷㄷ [5] ㅇㅇ(118.36) 04:59 62 1
26120037 일반 완장들은 해명해주세요❗+ ㅇㅇ(118.235) 04:58 59 7
26120036 일반 하데스2 회피가 느린거같아 [1] 생간갤로그로 이동합니다. 04:58 42 0
26120035 일반 롤토 졸업까지 76점... 최다킬갤로그로 이동합니다. 04:57 28 0
26120034 일반 이터널 리턴 vs 저 도로 킵고잉 [1] ㅁㄴㅇ갤로그로 이동합니다. 04:57 17 0
26120033 일반 쏘옥쏘옥(호리베 애미 보지에 발넣는 소리) ㅇㅇ(118.235) 04:56 20 0
26120032 일반 하데스2 2막까지밖에 없단게 진쟈냐 [2] 보영이의코코아갤로그로 이동합니다. 04:56 76 0
26120031 일반 이제 중갤도 게임인방 언급 허용해야지 [12] ㅇㅇ(121.148) 04:56 438 13
26120030 일반 팬티 레전드.jpg [1] ㅇㅇ(218.50) 04:56 99 0
26120029 일반 호리베 고아새끼 ㅇㅇ(118.235) 04:55 15 0
26120028 일반 카드게임 기막힌거 하나 안나오 [1] ㅇㅇ(121.88) 04:55 24 0
26120027 일반 좆병신 프롬 파쿠리 게임 오공섹스신화 기대하는 흑우없제 ? [1] 발정메즈키(67.250) 04:54 24 0
26120026 일반 크로노 아크???? <----- 이거 잼씀???? [4] ㅇㅇ(118.36) 04:54 51 0
26120025 일반 어제연 마크중망호 근황 [3] 담당일진연가냄갤로그로 이동합니다. 04:53 46 0
26120024 일반 미 중부 토네이도 경보 ㄷㄷ ㅇㅇ(110.9) 04:52 79 0
26120023 일반 우웅.. 우우웅 웅웅웅 우우우웅 웅우웅 웅웅 웅 ㅇㅇ(118.235) 04:52 66 0
26120022 일반 오늘 쳐본 게이밍 기타곡 [6] ㅇㅇ(182.221) 04:52 33 1
26120021 일반 이제 실크송만 나오면 살겜없네 [1] ㅇㅇ(211.207) 04:51 33 0
26120020 일반 엘든링 오랜만에 하니 시간 증발하네 ㅇㅇ갤로그로 이동합니다. 04:51 29 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2