프로젝트/[인프런] 게임 프로그래머 입문 올인원

[게임 프로그래머 입문 올인원] 2D 포폴 준비 : 젤다 실습(114강)

순정법사 2024.09.10

A. 2D 포폴 준비 

7. 젤다 실습

a. 타일맵 데이터 가져오기

여기까지 만든 파일을 기반으로 조금의 수정을 둬 젤다 실습을 해볼것임!

 

강의 파일을 가져와주고

 

갈 수 있는 영역과 없는 영역이 찍힌 데이터를 tilemap_01.txt로 수정해준다

 

여기서 주석처리된 디버그 모드를 켜주고

 

위 파일은 C++ 스타일로 적용해야 됨

 

b. 충돌 판정 함수

타일맵으로 충돌판정을 하기 위해 함수를 새로 만들어줬다

 

CanGo, ConvertPos 두개를 만들어주고

 

 

가려고 하는 위치에 갈 수 있는지를 파악해 불리언값을 뱉는 CanGo함수와

벡터값으로 위치를 이동시키는 ConvertPos를 만들어준다

 

그럼 여기까지 보여짐

 

c. Player 수정하기 : 움직임

여태까지 하드코딩했던 움직임을 enum으로 깔끔하게 잡아준다

 

enum으로 방향 생성해주고

 

상태 변화도 enum으로 만들어준다

 

움직임에 따라 TickIdle... 함수들과 CanGo, SetCellPos 등 움직임에 관련된 함수들을 추가로 작성해준다

 

먼저 애니메이션 플립북을 캐싱해서 저장해주고

 

당연히 위 값들은 DevScene에서 추가해준걸 사용해야 한다

 

기본 상태와 움직임은 이렇게 작성해주고

 

가만히 있을 때 한칸씩 /. 애니메이션 + 상태 변화 + 포지션 변화 까지 해서 작성해준다

 

위에서 자주 나오는 cellPos는 포지션을 어디로 관리하는지 여부임

 

움직일 때 상태변화와, 위치 값 수정

 

당연히 상태 변화가 따르면 애니메이션도 움직이게 해준다

 

애니메이션은 위에서 캐싱한 데이터를 사용한다

 

그럼 이렇게 됨!

 

한칸씩 이동하는 걸 볼 수 있음 (타일 켜고 끄는걸 깜빡하고 안꺼줘서 중간에 X로 눌렸음..)

 

다음 위치를 갈 수 있는지, 이동하는 방식 등 위에서 사용된 함수도 이렇게 구현해준다

 

d. DevScene 코드 수정

위 코드는 다음 DevScene으로 넘어오게된다

 

이 코드까지 작성해준다!

 

여기서 _destPos는 가야하는 포지션을 의미 (추가)

 

디버그 모드를 끄고 보게되면 이렇게 나온다!

 

충돌객체를 안껐더니 네모가 보인다 ㅎ_ㅎ

 

e. 서버와 클라의 데이터

만약 몬스터를 만든다고 생각한다면 몬스터를 언제 오게 만들어야 할까?

길찾기 주기를 잘 생각해봐야한다 

 

움직일때마다 하면 너무 자주니까 적당한 시간을 두고 

서버에서 제일 부담이 많은 부분이 길찾기 (몬스터 A*)

이런 부분에서 db만 따로 다른 컴퓨터에 두는 경우도 있어서 (이러면 개발 난이도가 매우 높아진다)

 

<mmo에서 신경써야할것>

  • cpu
  • db부하
  • 네트워크 통신

 

위 3대장이 느려지면 다같이 느려진다

 

이 뒤로는 서버 내용을 간략하게 다루면서 클라와 서버의 관계에 대해서 말씀하셧다..

클라 개발자여도 서버를 공부해야하고 서버 개발자여도 클라를 공부해야합니다!!

 

💥 추가 주의 사항 :: 텔레포트

 

여기서는 주의해야 하는게

 

클라가 위치이동같은 중요한 좌표 이동을 해버리면 해킹위험이 있음

 

클라 - 서버는 퍼즐을 맞추는 것 처럼 개발하는 경우가 많고, 여기서 버그가 많이 생겨서

조금이라도 둘 다 알아야한다!!

 

깔끔하게 정리하게 되면 이렇게 된다 완성!!!

 

 

 


출처 : https://www.inflearn.com/course/%EA%B2%8C%EC%9E%84-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8-%EC%9E%85%EB%AC%B8-%EC%98%AC%EC%9D%B8%EC%9B%90-rookiss#curriculum

 

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버 -

어디부터 시작할지 막막한 게임 프로그래밍 입문자를 위한 All-In-One 커리큘럼입니다. C++, 자료구조/알고리즘, STL, 게임 수학, Windows API, 게임 서버 입문으로 이어지는 알찬 커리큘럼으로 게임 프

www.inflearn.com