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

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

A. 2D 포폴 준비 7. 젤다 실습a. 타일맵 데이터 가져오기여기까지 만든 파일을 기반으로 조금의 수정을 둬 젤다 실습을 해볼것임!     b. 충돌 판정 함수타일맵으로 충돌판정을 하기 위해 함수를 새로 만들어줬다    가려고 하는 위치에 갈 수 있는지를 파악해 불리언값을 뱉는 CanGo함수와벡터값으로 위치를 이동시키는 ConvertPos를 만들어준다  c. Player 수정하기 : 움직임여태까지 하드코딩했던 움직임을 enum으로 깔끔하게 잡아준다              한칸씩 이동하는 걸 볼 수 있음 (타일 켜고 끄는걸 깜빡하고 안꺼줘서 중간에 X로 눌렸음..)   d. DevScene 코드 수정위 코드는 다음 DevScene으로 넘어오게된다   디버그 모드를 끄고 보게되면 이렇게 나온다!  e. 서..

[게임 프로그래머 입문 올인원] 2D 포폴 준비 : State 패턴(113강)

A. 2D 포폴 준비6. State 패턴a. 상태 기반으로 생각하기상태를 기반으로 모든걸 생각하기 몬스터로 예를 들면, 몬스터 : 로밍 -> 피격/찾기 -> 달려듬 -> 벗어남 -> 돌아감 이렇게 많은 상태에서 그 상황에 대한 코드만 생각하기!(인공지능, 애니메이션도 동일)     b. 움직임 함수화하기Player::Tick()될때마다 무분별하게 남발되고 있는 코드들을 정리해준다   여기선 작성되지 않았는데, 당연히 입력받는 함수도 작성해준다   c. 상태변화 함수 작성하기만약 state가 변하면 함수로 같이 묶어주는게 중요함   d. FMS [Unity] FSM - 유한 상태 기계FSM(finite-state machine)은 상태(state)를 기반으로 동작을 제어하는 방식을 구현하기 위한 디자인 패..

[게임 프로그래머 입문 올인원] 2D 포폴 준비 : 충돌 레이어(112강)

A. 2D 포폴 준비5. 충돌 레이어a. 충돌객체 생성하기  b. 나는 누구인가 / 누구랑 충돌할 것인가 충돌타입의 enum 생성해주고  c. 비트플래그🌟 비트플래그 : 최대한 정보를 압축하며 어떠한 정보를 기입하는데 사용(공업용 계산기에서 1이면 충돌 0이면 아닌것이랑 동일) 👉 즉, 비트단위를 쪼개서 정수처럼 활용하는 것임빠르고, 메모리 이점도 있고 굿굿!  d. 충돌 레이어 함수 작성하기다시 돌아와서 어떤 레이어와 충돌할건지 알려주는 함수 작성해주고  충돌할때 예외처리도 해주기 (충돌 의지가 있는지부터 물어보자)  + 자식코드들도 꼭 넣어주자   여기까지 하면 충돌처리가 잘 됨!  e. 슈퍼마리오를 모작한다면?중력과 점프를 구현하면 됨   여기서 onGround, jumping 같은 불리언 멤버..

[게임 프로그래머 입문 올인원] 2D 포폴 준비 : 충돌 처리(111강)

[게임 프로그래머 입문 올인원] Windows API 입문 :  (86강)A. 2D 포폴 준비4. 충돌 처리 a. 충돌 감지하기저번에 충동을 처리한 부분은 '감지'를 했다고 보는게 맞음    💥 오류 수정  위에서 SetTileMap을 주석처리 했더니 값 설정을 안해줘서 다른값이 들어가서 그럼!      b. 충돌 박스 정보 가져오기충돌처리하는 부분은 두가지 방법이 있음 1. 갈수있는지 판단 후 처리2. 일단 충돌 후 반대방향으로 밀어주기  먼저 박스 콜라이더를 활용해서 만들 예정    c. 충돌 처리 코드 맞춰주기여기서 기본 Collider에 적혀져 있는 충돌 코드를 보면   이게 GetRect와 살짝 다를 수 있고, 여기서 오는 버그가 생길 수 있기 때문에 위에서 생성한 GetRect 함수를 이용해..

[게임 프로그래머 입문 올인원] 2D 포폴 준비 : 사운드 (110강)

A. 기본 템플릿 분석3. 사운드 a. 사운드 넣어주기   b. 코드 껴맞추기    sound파일은 음반, soundManager은 기계라고 보면 됨 파일 입출력과 비슷하게 이건 깊은 내용은 알 방도도 없고, 그냥 이렇게 인터넷에서 있는 코드 가져와서 만들어지면 되는거라고 알려주심정확하게 내가 일햇을때 느낀 감정이랑 똑같이 말씀하셔서 뭔가 ㅋㅋㅋ 웃겼다웹 개발할때도 파일 입출력때 굉장히 고생했던 기억이 있었는데 그때 생각 나기도 하고 쩝,, (넉두리)  💙 GPU의 역할 = 막노동자 3d게임이 되면 픽셀단위로 하는 연산을 모두 CPU한테 떠넘기면 과부화가 되니까GPU한테 떠넘겨서 시키는것!  근데 여기서는 Sound가 SoundActor 없이 혼자 실행되는 것이기 때문에, 다른 노래를 실행시키려고 하면..

[게임 프로그래머 입문 올인원] 2D 포폴 준비 : 파일 입출력(109강)

A. 2D 포폴 준비2. 파일 입출력a. 데이터 시트와 데이터 베이스의 차이점게임은 cpu와 ram이 서로 소통하면서 만들어진다스택, 힙 등등은 ram으로 들어가는 애들단점은 휘발성 메모리 따라서 SSD / 하드디스크로 장기기억으로 바꿔준다 모든 리소스들이 데이터임 데이터 시트 (레벨 디자인) // 데이터베이스 (몇 천명의 정보) ❔ 데이터베이스를 왜 사용해야할까? 게임 컴퓨터의 파일 입출력으로만 데이터를 관리하면나중에 어떤 데이터를 빠르게 찾을 수 없음 -> 알고리즘의 영역   C++에서는 Ram에 있는 내용을 SSD로 내려주고 올려주는걸 배우면 된다 b. 입출력 함수 작성하기런타임에 만들어진 정보(포인터 주소 같은) 말고🌟 핵심적인 데이터들을 기록해서 저장해야함  파일 포멧을 정해야하는데, 그건 알..

[게임 프로그래머 입문 올인원] 2D 포폴 준비 : 타일맵 (108강)

A. 2D 포폴 준비1. 타일맵 a. 사전 준비 (삭제)계속해서 여기서 포트폴리오를 준비할 예정!   여기서 보이는 actor나 ui들은 개발씬 뿐만아니라 다른 씬에서도 사용될 수 있기 때문에 Scene으로 올려준다  삭제한 파일의 TestPanel 코드 지워주고    까지해서 코드를 정리해주기 b. 맵의 종류 : 타일맵맵은 통맵 / 타일맵 2가지로 나뉨 통째로 로드하면 통맵 타일맵은 페인팅하듯 칠하는걸 타일맵 타일맵도 결국엔 리소스 💙 리소스와 오브젝트의 차이점리소스 : 영구적으로 저장되어야하는 파일, 언제든지 로드할 수 있어야함오브젝트 (액터) : 씬에 배치해서 동적으로 생성하는 개념  게임시작할때마다 불러들여서 보여줘야함   각 타일을 찍으려면,먼저 맵의 크기와 타일의 크기 2가지를 알아야 함  ..

[게임 프로그래머 입문 올인원] 2D게임 프레임워크 : UI (107강)

A. UI 1. UIa. UI 만들기게임의 UI를 어느위치에 만들고, 어떻게 관리해야 하는지에 대한 내용을 다뤘다  b. Button 만들어주기UI의 대표 button을 만들어준다   c. UI 출력하기DevScene에서 UI목록들을 출력함     💥 warning!여기까지 만들면 버튼이 작동하긴 하나, 제대로 작동하지 않는걸 볼 수 있음그럼 이때 생각해야하는건, 어떠한 기능이 추가된 UI를 하나 만들때마다 어떻게 만들어야 할까?매번 상속을 받아 새로운 클래스를 판다 👉 앞으로 만들게될 수십, 수백가지의 UI를 다 하나하나 제작하는것에는 한계 🌟 그럼 콜백함수를 활용해서 만들면 어떤 기능을 만들면 됨! d. 콜백함수 추가하기   e. Panel 작성하기Panel : UI를 관리하는것언리얼, 유니티에..

[게임 프로그래머 입문 올인원] 2D게임 프레임워크 : 충돌 (106강)

A. 충돌 1. 충돌 프로세스 이해하기a. 충돌 프로세스상속보다는 컴포넌트로 여러 객체에 넣어주는게 더 좋다 + 무적일때에는 충돌처리를 꺼주면 깔끔하게 표현할 수 있다   b. 충돌 종류 생성하기 c. 충돌 코드 작성하기 충돌은 액터 좌표를 따라간다고 생각  d. 플레이어에게 붙여주기DevScene에서 하기    e. 예외객체 생성이제 충돌처리를 할 예외객체를 액터라고 설정 f. 충돌처리 CollisionManager 생성이제 충돌처리를 처리할 CollisionManager를 생성해주기 + 여기서는 생포인터를 사용하지만 스마트포인터를 사용해줘야 함   g. 충돌의 종류 만들기    f. 충돌의 시작, 끝 여부를 판별하는 코드 생성 Player에도 동일하게 위 코드를 작성해주기 g. 충돌들을 저장할 Map..

[게임 프로그래머 입문 올인원] 2D게임 프레임워크 : 카메라, 레이어 (105강)

A. 카메라 1. 카메라 만들기a. 카메라 생성하기카메라는 컴포넌트로 만들어줘서 객체에 붙여줄예정 먼저 언리얼 버전으로 만들거라 Start로 되어있던 함수들을 모두 수정해주고  Comp를 기반으로 한 CameraComp생성   + 씬매니저한테 카메라의 위치를 업뎃시켜준다 b. SceneManager에 카메라 위치 넣어주기어쨋든 카메라는 씬을 촬영하는 것이기때문에 포지션을 씬매니저한테 업뎃시켜줘야 함  c. Player한테 카메라 컴포 붙여주기 d. Actor에 컴포 붙여주는 기능 생성하기   e. 이미지 위치 변경해주기이제 플레이어에게 카메라도 넣어줬고,카메라의 위치에따라 플레이어와 배경이 변경되어야 하니위에서 구현한 카메라의 포지션을 바탕으로  x,y값을 변경해준다   여기선 이렇게 배경과 애니메이션 ..