디시인사이드 갤러리

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

갤러리 본문 영역

[일반] [연재] junggallsoup - 8.맵의 객체화, 지형

겜스갓흥엔진갤로그로 이동합니다. 2019.07.02 15:52:34
조회 4179 추천 33 댓글 32
														


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






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






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




저번시간... 핫산은 2중 그리드로 맵 정보를 맵핑해 저장하려다가 대가리가 깨져버리고 말았다...

대가리를 싸매고 히오스나 돌린지 어연 2주째...

핫산의 대가리를 번뜩이며 스쳐가는 생각이 있었으니 그것이 바로 객체다.

생각해보니까 맵 자체를 객체로 만들어서 그리드에는 객체 id만 넣어서 관리하면 되는거 아님??





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





바로 실행에 옮긴다. 맵을 만들면서 obj_platform을 같이 만들고

그 오브젝트의 id를 따로 저장할 그리드에 저장한다음

플렛폼 객체에게 자신이 위치한 x y 정보를 알려준후

해당 오브젝트를 비활성화 해버렸다.


사실 객체 단위로 저장해서 관리하자는 생각은 계속해서 하고있었으나.

맵마다 하나의 객체를 지정해주면 그 객체들에 대한 최적화, 사용하지 않는 객체와 사용하는 객체의 구별을 어떻게 해야할지 몰라서

삽질하고 있었다. 근데 생각해보니까 인스턴트 비활성화 기능이 있었더라고

쓰는 객체만 활성화하고 나머지를 비활성화 해버리면 최적화도 해결되고 구별하는것도 해결된다.






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




시스템 컨트롤러는 지속적으로 플레이어가 위치한 맵의 위치와, 세이브 인스턴트 그리드에 저장된 객체 id의 위치가 일치하는지 검사한다.

그것에 변화가 생긴다면, 시스템 컨트롤러는 바뀐 맵에 대응하는 객체 id를 꺼내서 활성화 시킨다.





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





맵의 위치에 변화가 생기는 순간은 플레이어가 포탈을 이용할 때이다.

포탈을 이용하면 지금까지 플레이어가 맵으로 사용하던 객체를 비활성화 해준다.





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



오브젝트 플렛폼에는 first_enter라는 논리 변수를 하나 선언해준다 //농담이다 겜스는 병신엔진이라 숫자 들어가는 변수는 전부 double로 받는다

이 변수는 플레이어가 맵에 처음 들어왔는지 체크해준다.

여기서 의문이 생길수 있다. "플레이어가 무언가를 놓치고와 이전맵으로 돌아가면 첫번째 입장이 아니니 액션이 실행되지 않는것이 아닌가?"

이곳에서 사용하는 first_enter는 플레이어의 입장 여부를 체크하는것이 아니다.


우리는 게임이 시작할때 미리 객체들을 모두 생성해버린다음 비활성화 함으로서 "생성됨" 이벤트를 사용할수 없게 되었다.

플레이어가 방에 입장했을때 몬스터 그리드는 변하지 않으므로 상관 없지만, 그 그리드에 저장된 정보를 가져와서 몬스터를 소환해주는 단계가 있어야한다.

그 단계는 일반적으로 객체의 스탭 이벤트에 할당된다. 여기서 잠시 스탭에 대해 간단히 설명하자면, 스탭 이벤트는 다른 언어의 '스레드'와 비슷한 이벤트로

1초에 룸스피드만큼 (보통은 30으로 설정되니 30번 만큼) 반복되는 이벤트다. 즉 우리가 첫번째 입장인지 체크해주지 않는다면 스탭이벤트는


내가 활성화 되어있니? and 몬스터 그리드가 존재하니?

그럼 그리드 정보 받아와서 몬스터 생성해!


내가 활성화 되어있니? and 몬스터 그리드가 존재하니?

그럼 그리드 정보 받아와서 몬스터 생성해!


내가 활성화 되어있니? and 몬스터 그리드가 존재하니?

그럼 그리드 정보 받아와서 몬스터 생성해!


내가 활성화 되어있니? and 몬스터 그리드가 존재하니?

그럼 그리드 정보 받아와서 몬스터 생성해!


.

.

.


이런식으로 여러번 동작해버린다.

뭔가 장황하게 설명하긴 했지만 대충 저 변수는 스탭이벤트의 중복 실행을 막기위한 변수다





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




만약 우리가 처음 입장했다면

몬스터를 만들어준다.

이제 처음 입장하지 않았음





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




몬스터의 위치를 유심히 지켜보자.

정보가 성공적으로 저장되었다!





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




이 단계에서 처음부터 몬스터가 아예 존재하지 않을 경우 배열 범위 오류가 나는걸 확인해 배열이 처음부터 [0],[1]공간을 가지고 시작하도록 하였다.





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




이제 맵 정보가 성공적으로 저장되는것을 확인했으니 이제는 지형을 만들 차례다.

먼저 항상 가운데에 위치하던 포탈을 랜덤한 위치에 생성되게 만드는 것 부터 손보았다.






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




대충 이렇게,

모서리에 포탈이 생성된다면 2개의 포탈이 겹쳐버릴수 있는 문제가 있으므로 구석자리에는 포탈이 생성되지 아니한다.





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




포탈의 위치가 랜덤해졌으니 이제 플레이어가 지정된 좌표로만 이동해서는 안된다.

이전까지는 포탈을 이동한 후 플레이이어의 좌표 이동을 포탈 오브젝트가 담당하였지만

이제 포탈 오브젝트는 플레이어를 직접 이동시키는것이 아닌 플레이어가 어느 방향 포탈을 이용했는지에 대한 정보를 플레이어 오브젝트에 전해준다.




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




플레이어 오브젝트는 포탈 오브젝트에게 전달받은 방향 정보를 토대로 자신의 위치를 재구성한다.





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




좋다.





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




이번엔 지형을 만든다. 지형 테스트를 위해 일단 기본적으로 공간이 모두 산으로 리전 되도록 설정하였다.





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




벌써 존나 옛날이 되어버린 예전 연재에 씨부린 바로는 일단 하트비스트좌의 코드를 사용해 대충 지형을 만든뒤

셀룰러 오토마타 보정을 통하여 지형을 만든다고 했었다.

하지만 그런식으로 작업하면 공간과 공간의 유기적인 연결을 보장해주지 못하기 때문에 일단 주석처리 해놨었다.

그 주석 처리를 풀기위해 공간과 공간사이의 연결을 보장(물리) 해주는 로드메이커 오브젝트를 하나 만든다.

로드메이커는 포탈의 x,y좌표에 소환된후, 스테이지의 중심부 cx,cy와의 길을 만들어 준다.






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




자기 위치가 중앙보다 작으면 자기 위치를 한칸 키우고

자기 위치가 중앙보다 크면 자기 위치를 한칸 내린다.

최종적으로 자기 위치가 중앙과 똑같아지면 무한 루프를 break로 빠져나온다.





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




포탈은 생성될때, 연결을 보장해줄 로드메이커를 자기 위치에 생성한다.






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




성 공!




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




이제 통한의 주석처리를 풀어준다.





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





생성된 지형.


다음시간엔 아이템으로 찾아올수 있으면 좋겠다


자동등록방지

추천 비추천

33

고정닉 16

2

댓글 영역

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

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
2858 설문 SNS로 싸우면 절대 안 질 것 같은 고집 있는 스타는? 운영자 24/05/06 - -
25963616 공지 2024년 볼만한 게임쇼케이스 및 시상식 [62] 실 성갤로그로 이동합니다. 24.04.14 21336 48
26120965 일반 본가 개고기 탕후루 근황...jpg [43] ㅇㅇ(202.14) 10:34 3297 23
26120924 일반 크로노아크 누드패치 해봤어... [11] ㅇㅇ갤로그로 이동합니다. 10:23 1197 13
26120770 일반 중국간 K리니지라이크 근황...jpg [33] ㅇㅇ(118.220) 09:41 4200 39
26118184 일반 JRPG 식 연출....jpg [69] ㅇㅇ갤로그로 이동합니다. 05.06 11761 64
26116238 일반 밸브가 올해 보여준 행보.JPG [179] 홍지원갤로그로 이동합니다. 05.06 11042 230
26116097 일반 실시간 정신줄 놔버린 헬다이버즈 CEO.jpg [42] Araghast갤로그로 이동합니다. 05.06 9808 72
26115918 일반 NTR 야겜에서 은근히 꼴리는 연출...jpg [85] ㅇㅇ(183.109) 05.06 10411 63
26115491 일반 사태 끝난 헬다이버스 디코 근황.JPG [33] 카말라갤로그로 이동합니다. 05.06 8711 53
26115367 일반 [대회] 2024 중세 유아퇴행 대회 결과 발표 [175] 메프나올거같아갤로그로 이동합니다. 05.06 11917 189
26114696 일반 "꼬우면 접어"란 말론 문제를 해결할 수 없다. [455] 시가렛갤로그로 이동합니다. 05.06 19107 190
26114532 일반 소니 항복했다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ [267] ㅇㅇ(121.147) 05.06 17704 71
26114261 일반 페이커...중갤 샤라웃...gif [74] 캡틴증후군갤로그로 이동합니다. 05.06 13230 71
26114186 일반 내가 커마 호아킨 피닉스로 해봤다가 후회 했음 [87] ㅇㅇ(14.47) 05.06 14626 95
26113962 일반 롤대남 문철 근황...jpg [152] ㅇㅇ(14.37) 05.06 15364 94
26113392 일반 스텔라블레이드 일본에서도 흥행 조졌네 ㅋㅋㅋ [161] 진순민초지코하와이안피자갤로그로 이동합니다. 05.06 16762 175
26113389 일반 열혈신기록 열혈팀으로 우승했다! 😭 [5] ㅇㅇ(124.194) 05.06 797 13
26111207 일반 [유아대회](소닉)챠오 키우는 만화 [38] 재앙갤로그로 이동합니다. 05.05 3882 58
26110885 일반 [유아대회] 컴퓨터실의 추억 [26] ㅇㅇ갤로그로 이동합니다. 05.05 4436 23
26110847 일반 [유아대회] 컴퓨터 시간에 했던 정체불명의 산타게임 [45] szzz갤로그로 이동합니다. 05.05 9050 45
26110705 일반 "짐빔이 저능아 치료제" [151] ㅇㅇ갤로그로 이동합니다. 05.05 16956 101
26110593 일반 [유아대회]뜌따이의 추억이 담긴 모바일 게임들을 알려주마 [88] No1채널갤로그로 이동합니다. 05.05 6274 93
26110425 일반 역대 저능아 치료제 소개 [113] 시가렛갤로그로 이동합니다. 05.05 15400 141
26110330 일반 [유아대회] 그 시절 국내최고 온라인 RPG .jpg [46] 오사카만박갤로그로 이동합니다. 05.05 7735 89
26110320 일반 [유아대회] 우리가 저출산인 이유 [17] 메타세쿼이아갤로그로 이동합니다. 05.05 6042 43
26110306 일반 헬다 ceo 자포자기했나보네 [42] doomer갤로그로 이동합니다. 05.05 11709 50
26110227 일반 [유아대회] 비운의 명작 천주 [25] ㅇㅇ갤로그로 이동합니다. 05.05 3863 37
26110084 일반 [유아대회] 목숨을 건 순애 드라마 [13] THE·바니아갤로그로 이동합니다. 05.05 3495 24
26109976 일반 [유아대회] 우우... 뜌땨이... 께임소개 할께! [53] metroidvania갤로그로 이동합니다. 05.05 7071 114
26109578 일반 한문철 : 내 이름 얼마든지 써도 된다. 돈놀이만 하지마라. [104] ㅇㅇ(115.161) 05.05 12735 127
26109107 일반 [유아대회] 물건에도 영혼이있다 가르쳐준 게임하며 울었던적 [35] 느와르갤로그로 이동합니다. 05.05 4203 46
26109065 일반 속보)헬다뷰 압도적 부정적 입갤 [78] ㅇㅇ갤로그로 이동합니다. 05.05 10930 64
26109059 일반 악명높았던 스팀 한국인 사기꾼 근황.JPG [42] 홍지원갤로그로 이동합니다. 05.05 8692 92
26108969 일반 [유아대회] 돌아가신 엄마가 마지막으로 사준 게임 [146] ㅇㅇ갤로그로 이동합니다. 05.05 8223 155
26108843 일반 헬다이버스 2 CEO 근황....JPG [88] 홍지원갤로그로 이동합니다. 05.05 12926 91
26108743 일반 [유아대회] 듀부이는 응애때 이거했우... [10] Sepulveda갤로그로 이동합니다. 05.05 2346 23
26108690 일반 [유아대회] 결투장과 초딩 [52] 전일택2갤로그로 이동합니다. 05.05 4885 38
26108480 일반 [유아대회] 우리들의 영원한 아이도루 스타☆ [36] 마르티나갤로그로 이동합니다. 05.05 4449 38
26108016 일반 헬다 환불 망설이는새끼들 들어와라 [78] ㅇㅇ(1.229) 05.05 12838 165
26107753 일반 짤 존나웃기네 ㅋㅋㅋ [109] 토끼갤로그로 이동합니다. 05.05 13780 102
26107704 일반 [유아대회] 초2때 즐겨했던 게임.. [51] 얌전갤로그로 이동합니다. 05.05 5060 46
26107649 일반 [유아대회] 천방지축 어리둥절 빙글빙글 돌아가는 중붕의 게임 [36] 니코냥갤로그로 이동합니다. 05.05 3747 28
26107604 일반 FAITH냥이........jpg [54] ㅇㅇ갤로그로 이동합니다. 05.05 8885 47
26107591 일반 [유아퇴행대회 공지] 1위 상품 변경 [112] 메프나올거같아갤로그로 이동합니다. 05.05 5517 82
26107330 중망호 [유아대회] 온라인 PVP겜에서 컴까기만 하던 꼬마 [32] 비정상인갤로그로 이동합니다. 05.05 3294 29
26106947 일반 이거보고 개웃었어 [85] ㅇㅇ갤로그로 이동합니다. 05.05 11219 66
26107177 일반 속보) 꼬우면 환불하라던 헬다이버스2 근황...JPG [190] 홍지원갤로그로 이동합니다. 05.05 15137 103
26106855 일반 혼란한 갤에 저번에 석촌호수 갔을때 찍은 사진 올림 [29] 아모른직다갤로그로 이동합니다. 05.05 5156 31
26106769 일반 [유아대회] 00년생 미취학 중붕이의 머릿속에 남은 게임들 [30] ㅇㅇ갤로그로 이동합니다. 05.05 3298 28
26106481 일반 [유아대회] 오락실 앞에 무조건 설치되어 있었던 그 로봇대전 게임... [122] 모던워페어갤로그로 이동합니다. 05.05 4511 67
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2