본문 바로가기

분류 전체보기85

게임 디자인 패턴 1. 명령 패턴 (Command Pattern) 실체화 (reify) 에 대해예제예제 1) 기본 형태의 명령 패턴예제2) 액터를 인자로 넘겨주기예제3) 실행 취소와 재실행 명령 패턴은 GoF에선 요청 자체를 캡슐화한 것이다 라고 표현한다.많이 와닿지 않는다. 게임 프로그래밍 패턴에서도 명령 패턴은 메서드 호출을 실체화한 것이다 라고 표현하는데, 이 역시 와닿지 않는다. 이는 우리가 실체화라는 단어에 대해 잘 알지 못하기 때문이다. 실체화 (reify) 에 대해 실체화라는 말은 몰라도 C#을 공부했었다면 콜백이라는 말은 알 것이다. 대리자나 이벤트가 콜백 함수를 구현하기 위한 문법이기 때문이다. 대리자나 이벤트를 사용하는 것을 보면, 마치 함수 자체를 데이터처럼 사용한다. 이 데이터처럼 사용한다는 것, 즉 객체화 되어 있다는 것이 실체화의 의미라고 보면.. 2023. 10. 23.
게임 디자인 패턴 0. 디자인 패턴에 대해 들어가며레퍼런스앞으로의 글? 들어가며 게임에서뿐만 아니라, 모든 개발 분야에서 사용되는 말 중에 디자인 패턴이라는 말이 있다. 이름만 들으면 굉장히 아트와 관련된 요소일 것 같지만, 너무나도 소프트웨어적인 이야기이다. 디자인 패턴은 객체지향 관점에서 재사용성을 최대화하기 위해 소프트웨어를 어떻게 설계할 지를 약속해놓은 것이다.이름이 정말 직관적이다.말그대로 소프트웨어를 디자인하는데 있어서 문제를 해결하기 위해 자주 나오는 패턴들을 따로 모아 정리한 것이라고 하면 되겠다. 디자인 패턴에 대한 자세한 설명은 다음의 유튜브를 보고 나면 이해가 갈 것이다.개발자라면 "무조건" 디자인 패턴을 배워야한다?좋은 코드를 짜고 싶다면? 디자인 패턴을 배워야한다구? 모든 개발자가 배워야 할 3가지 디자인 패턴..! - 0.. 2023. 10. 23.
최종프로젝트를 앞두며 내일배움캠프를 시작한지 어언 두 달, 사전캠프까지 포함하면 세 달이 넘어버렸다. 아직까지는…. 너무 만족스럽다!!! 공부할 때 드는 에너지는 학교 다닐 때보다 반도 안드는데 막상 공부양은 역대급으로 많다! 그동안 정말 많은 것을 공부했다.쌓여온 TIL들이 그걸 증명해주는 것이겠지. 교내 게임동아리에 처음 들어갈 때만해도 건들기가 무섭기만 했던 유니티도 이제는 익숙?은 해졌다. 이제 약 8주간의 최종프로젝트를 앞두고 있는데, 중요 포인트를 정리해보려 한다. 프로젝트 매니징 (Project Managing) 여러 번의 팀 프로젝트를 겪고난 뒤 느낀 건 팀원 간 역할 분배나 전체적인 진행도 관리가 중요하다는 것이다. 무엇보다 중요한건 그래서 어떻게? 이다. 몇 가지 협업 툴이 있는데, 소개해보고자 한다. 깃허.. 2023. 10. 20.
Unity 포톤 동기화 작업 시 주의할 점들 플레이어블 캐릭터를 Instantiate할 때게임 로직 동기화 캠프에서 포톤을 이용한 팀 프로젝트가 점점 마무리되는 단계이다. 포톤으로 동기화를 하면서 플레이어 동기화 같은 것들이 어려울 줄 알았는데, 의외의 복병이 바로 게임 로직 동기화였다. 서버 (or 마스터 클라이언트) 에서 처리해야하는 함수와 개별 클라이언트에서 각각 처리해야하는 함수들의 구분이 필요했었는데, 초기 코드 작성 단계에서 그것을 제대로 고려하지 않은 점이 가장 큰 패착이었다. 프로젝트의 완성도가 아쉬운만큼 그 아쉬운 점에 대해 적어보려 한다. 플레이어블 캐릭터를 Instantiate할 때 private void StartGame() { int idx = PhotonNetwork.LocalPlayer.ActorNumber; if (id.. 2023. 10. 19.
Unity 기존 게임을 포톤 PUN2로 동기화하기 MonobehaviourPun vs MonobehaviourPunCallbacks로컬 vs 리모트변수 동기화: IPunObservable함수 동기화: PunRPC 포톤으로 기존 싱글플레이 게임들을 멀티플레이 게임으로 만들어보자. 물론 기존에 만들어놨던 게임 구조가 너무나도 복잡하면…. 좀 힘들 수 있다. 주로 상속받는 부분 변경과 함수 변경에 대해 이야기해보고자 한다. MonobehaviourPun vs MonobehaviourPunCallbacks 일단 제일 먼저 하게되는 일은 Monobehaviour를 상속받고 있던 기존의 스크립트를 MonobehaviourPun이나 MonobehaviourPunCallbacks를 상속받는 걸로 바꿔주면서 시작한다. 둘의 차이는 뭐냐 하면, 오버라이드를 하는지 안하는.. 2023. 10. 18.
Unity 포톤으로 멀티플레이 구현해보기 로비 씬 만들기게임 씬 동기화빌드해서 테스트해보기 이번 글에서는 포톤을 이용하여 멀티플레이를 구현하는 방법을 정리해보도록 하겠다. 베이스라인이 되는 게임은 다음의 간단한 탁구게임을 이용하였다. Pong 게임 https://github.com/seoksii/Pong 포톤을 프로젝트에 Import하는 등의 설정은 다음의 게시글을 참고하자. 유니티 포톤 (Photon) 셋업하기포톤 Import 하기어플리케이션 아이디 가져오기 포톤 Import 하기 포톤은 기본적으로 Package Manager에서 제공해주는 것이 아니라 애셋스토어에서 Import를 해야한다. PUN 2 - FREEGet the PUN 2 - FREE package from Photon Engine and speed up your game de.. 2023. 10. 17.
Unity2D 사이드뷰 게임의 좋은 움직임 만들기 기본적인 달리기 테크닉매력적인 점프 구현하기1) 코요테 타임 (Coyote Time)2) 점프 버퍼 (Jump buffer)3) 그 외 잡다참고) 예제 코드 개선 게임을 만들다보면 사람들이 많이 놓치는 것 중에 하나가 바로 조작감이다. 좋은 게임 경험을 만들기 위해 필수적인 것으로 높은 난이도의 사이드뷰 게임일수록 중요도가 높아지는 부분이다. 플랫포머 장르에서 조작감으로 유독 언급이 많이되는 게임이 두 개가 있는데, 셀레스테 (Celeste), 할로우 나이트 (Hollow Knight)이다. 셀레스테 (Celeste) 할로우 나이트 (Hollow Knight) 이 글에서는 두 게임을 비롯하여 사이드뷰 시점 게임에서 조작감을 어떻게 올리는 지 그 테크닉에 대해 다뤄보도록 하겠다. Reference : Da.. 2023. 10. 16.
Visual Studio 단축키 이동 관련커서 이동탭 간 이동편집 관련줄 편집영역 편집열 모드 편집자동 완성탐색 및 수정디버깅 관련 비주얼 스튜디오에 상당히 간략한 단축키들이 많다는 것을 알았다. 이게 알아도 몇 번 써먹어 봐야 좀 손에 익는 것 같은데, 이번 기회에 아예 한 곳에 정리해놓고 최대한 의식해서 써보고자 한다. 이동 관련 커서 이동Ctrl + 왼쪽 화살표: 현재 커서를 현재 단어의 왼쪽 끝으로 이동Ctrl + 오른쪽 화살표: 현재 커서를 현재 단어의 오른쪽 끝으로 이동Ctrl + 위쪽 화살표: 현재 커서를 현재 문단의 맨 위로 이동Ctrl + 아래쪽 화살표: 현재 커서를 현재 문단의 맨 아래로 이동Ctrl + Home: 파일 맨 처음으로 이동Ctrl + End: 파일 맨 끝으로 이동Ctrl + ]: 괄호 끝으로 이동Ctrl.. 2023. 10. 13.
유니티 포톤 (Photon) 셋업하기 포톤 Import 하기어플리케이션 아이디 가져오기 포톤 Import 하기 포톤은 기본적으로 Package Manager에서 제공해주는 것이 아니라 애셋스토어에서 Import를 해야한다. PUN 2 - FREEGet the PUN 2 - FREE package from Photon Engine and speed up your game development process. Find this & other Network options on the Unity Asset Store.https://assetstore.unity.com/packages/tools/network/pun-2-free-119922 먼저 해당 링크에서 포톤을 내 프로젝트에 추가하자. 어플리케이션 아이디 가져오기 포톤을 Import하면 다음과.. 2023. 10. 12.
Unity 포톤 (Photon) 포톤 기본 기능PhotonNetwork1) ConnectUsingSettings()2) CreateRoom() & JoinRoom()3) Instatiate()MonoBehaviourPunCallbacks1) OnConnectedToMaster()2) OnJoinedRoom() & OnPlayerEnteredRoom()포톤뷰 (PhotonView) 컴포넌트PhotonViewObserved Component 추가 PhotonView1) PhotonTransformView2) PhotonAnimatorView3) PhotonRigidbodyView 포톤 (Photon) 은 멀티플레이를 구현하는 솔루션 중 가장 유명한 네트워크 엔진 중 하나이다. 여러 엔진에 적용 가능하고, 크로스플랫폼 간 통신도 지원하는 등.. 2023. 10. 11.