'프로젝트'에 해당하는 글 127건

 

 오브젝트간에 통신을 하는 방법은 여러가지가 있다. 일반적으로 처음 접하게 되는게 파블릭으로 선언해 주고 손으로 다는 건데 이거는 가끔 오브젝트가 떨어져 나가는 경우가 있어서 막 배울때 빼고는 별로 사용하지 않는다. 

 그래서 가장 많이 쓰는 방식은 static으로 메인 메니저들을 만들어 놓고 중앙집중적으로 이어서 만드는 거다. 문제는 이거는 프로젝트의 설계가 무너지면 리스크가 빠르게 전파가 된다. 회사에 대표가 개발에 대해서 무지한 경우 혹은 기획자가 개발에 대해 무지한 경우에 이 방식을 쓰면 프로젝트도 무너진다. 

 그래서 유니티에서 추천하는 방식은 유니티 이벤트를 활용하거나 조금 범용적으로 델리게이트 이벤트를 활용해서 오브젝트간 통신을 하도록 한는 경우가 많다. 분산적인 구조로 가는 것이고 분산적인 구조를 짤때는 이 방식을 가장 많이 쓴다. 델리이트 문법은 고급 문법에 속하기 때문에 실력있는 팀원을 충원할수 있는 팀에서 이 방식을 많이 사용한다.

 내 방식은 조금 독특한데 파인드 오브젝트 타입을 이용해 자동으로 접근하는 거다. 이 방식에는 치명적인 문제가 있는데 매니저가 하나가 아니라 복수로 다는 경우 엉뚱한 것을 찾거나 같은 타입에 오브젝트를 실수로 붙이는 경우에는 버그를 야기할 수가 있다. 죄다 다 찾아 버리기 때문이다. 이 방식은 팀원을 믿을수 있고 소통이 원활한 경우에만 쓸수가 있다. 

 그래서 보통 7명 내외에 소규모 인디 팀들이 이 방식을 많이 쓰는 편이다. 안티 패턴에 가깝긴 한데 장점이 있기 때문에 쓴다. 유니티가 왜 작은 팀에 최적화 되어있는지 알수 있는 패턴이다. 

 맨마지막은 종합 설명이다. 여기까지하고 끝인듯 싶다. 이게 마냥 따라하는 것은 재미가 없기 때문에 안보고 삽질하면서 만들어 보는 것도 하나의 방법일지도 모르겠다는 생가이 든다. 

 

 

'프로젝트' 카테고리의 다른 글

홈페이지 만드는 사이트  (0) 2023.05.28
유니티 async 코루틴 대체  (0) 2023.05.27
넷코드 초회차 도전  (0) 2023.05.21
네트워크 게임 유니티 도전  (0) 2023.05.20
C# 순수주의  (2) 2023.05.20

WRITTEN BY
아이고이아

,

 

 홈페이지 만들어 주는 사이트를 발견해서 이리저리 만져 보는중이다. 코드를 손을 대려면 돈을 내야 하는 거여서 편집에 한계가 있는거 빼고는 마음에 드는 사이트이다. 

 프로토타밉만 만들어 보고 본격적인건 직접 만들어서 AWS에 올려야 할듯 싶다. 

https://webflow.com/d

 

https://aigoia.webflow.io/

 

Portfolio template - Webflow HTML website template

 

aigoia.webflow.io

 요 형태이고 이걸 시간을 내서 실전으로 만들어 봐야 할듯 싶다. 

'프로젝트' 카테고리의 다른 글

오브젝트간 통신  (0) 2023.05.28
유니티 async 코루틴 대체  (0) 2023.05.27
넷코드 초회차 도전  (0) 2023.05.21
네트워크 게임 유니티 도전  (0) 2023.05.20
C# 순수주의  (2) 2023.05.20

WRITTEN BY
아이고이아

,

 

 그냥 유니티에서만 쓸꺼면 코루틴이면 차고 넘치는데 고닷엔진을 C#으로 쓰거나 람다에서 JS를 쓰려면 async를 쓰는게 크로스 플랫폼에 더 맞는듯 싶다. 연습을 조금 해 두어야 할듯 싶다. 

 간단히 순차적으로 돌아가는걸 만든다.

 WaitForSecond는 이걸로 대체 가능할듯 싶다. 그 다음으로 많이 쓰는게 WaitUntil이다. 이걸 만들어 보도록 하자. 

 이번엔 조금 어려울 수도 있다. 일단 코루틴부터 만들어 보자. 

 다 돌때까지 대기타게 하면 된다. 

 요렇게 하면 붙어진 스크립트에 클래스에 접근을 할수는 있다. 

 이번엔 고닷엔진에서도 같은식으로 작동하는지 본다. 

 C#으로 만들 수는 있는데 역시 GD Script를 쓰는게 바람직 하긴 하다. 조금 클래스에 접근하는게 유니티보다 번거롭긴 하다. 

 여튼 고도엔진하고 유니티하고 왔다갔다 하려면 유니티에만 있는 코루틴 보다는 범용적인 async로 써야 할듯 싶다. 

 보다 간결한 형태로 코드를 정리한다. 완전히 정확히 일치하지는 않지만 어찌됬든 연계가 되는거는 확실한듯 싶다. 

 

'프로젝트' 카테고리의 다른 글

오브젝트간 통신  (0) 2023.05.28
홈페이지 만드는 사이트  (0) 2023.05.28
넷코드 초회차 도전  (0) 2023.05.21
네트워크 게임 유니티 도전  (0) 2023.05.20
C# 순수주의  (2) 2023.05.20

WRITTEN BY
아이고이아

,

 

 게임리프트 강의가 죄다 언리얼 위주로 되어 있더라. 그래서 넷코드로 멀티플레이 게임을 만드는 것에 도전을 해볼 생각이다. 

 강의는 이거를 보도록 한다. 기본적인 게임 서버의 개념도 알려 주기 때문에 딱인듯 싶다. 

 패키지 메니저에서 com.unity.multiplayer.tools와 com.unity.netcode.gameobjcts를 깔아주도록 하자. 

 com.unity.multiplayer.playmode는 설치가 안된다. 23년도 이후 버전이여야 한다니 일단은 빌드해놓고 실행을 해야 할듯 싶다.  

 이번에 들어가는 회사가 실시간 서버통신 능력을 원해서 미리 좀 공부를 하고 가야 할듯 싶다. DB는 MySQL인데 그건 가서 배우도록 해야 겠다. 

 네트워크 오브젝트에 추가해 준다. 

https://github.com/VeriorPies/ParrelSync/releases

 

Releases · VeriorPies/ParrelSync

(Unity3D) Test multiplayer without building. Contribute to VeriorPies/ParrelSync development by creating an account on GitHub.

github.com

서버들어가는 멀티 게임만 어떻게는 해결하면 만사 오케이다. 거의 못만들 게임이 없어질듯 싶다. 

 패키지 등록 방식이 폴더에 넣고 더블클릭하면 되는 방식으로 바뀌었더라. 

 먼가 설치가 잘 안되는데 이거 안되면 포톤으로 도전해 봐야 겠다. 클론 메니저라는거를 쓰는듯 싶다. 

 왜 창을 하나 더 켜는지 모르겠지만 잘 따라가고 있다. 이게 보통 게임보다 서버가 들어가게 되면 난이도가 1.5 배는 늘어나는 편이다. 

 그 두개로 하는 이유가 호스트와 클라이언트를 나누기 때문인듯 싶다. 캐릭터가 두개가 뜨고 잘된다. 약간에 딜레이가 있는게 서버 맞는거 같다. 게임리프트는 언리얼 할때 넘어가도록 하고 넷코드로 충분히 게임 서버에 개념이 잡히고 그때 넘어가도 늦지 않을듯 싶다. 

 예를 들어서 자연스럽게 보간이 된다든지 이런게 필요하다. 

 먼가 새로운게 거를 들어간다. 모노비헤이비어가 아닌 네트워크비헤이비어라는것이 생겼다. 

 내일은 생활비를 대출을 좀 받아야 할듯 싶다. 월급 나올때까지 생활비가 좀 필요하다. 이사도 가야 하고 말이다. 돈이 다 떨어져서 아슬아슬 했다. 

 서버까지만 하고 다시 아트에 특히 애니메이션에 공부에 힘을 쏟아야 할듯 싶다. 

 마우스 포즈를 얻는데 리얼클립플레인이라는 생소한 개념을 쓴다. 

 이 강의는 한번에는 안될듯 싶고 시간을 들여서 여러번 반복하면 될듯 싶다. 20분씩 끊으면 8강의 정도 된다. 한번 흟고 지나가면 될듯 싶다. 천천히 시간을 들여서 반복하고 실전 프로젝트까지 해봐야 가능할듯 싶다. 

 강의를 듣는데 왜 구독자가 4만명이나 되는지 알듯 싶다. 매력적인듯 싶다. 

 배고픈데 머좀 먹고 해야 겠다. 잠이 안오니 잠이 올때까지하자.

 소비 패턴을 보니까 회사 다닐때는 90만원에서 120만원정도 쓰고 회사 안다닐때는 50만원정도 썼더라. 주거비는 제하고 그 정도이다. 자기 전이 제일 돈을 많이 쓰는데 야식을 사먹어서 그런듯 싶다. 

 OnNetworkSpawn이 Start함수랑 같은 역활을 한다고 한다. 이런건 외워 두어야 한다. 

 요것도 좀 외워 두어야 할듯 싶다. 

 네트워크 트랜스폼이라는 녀석으로 정보를 보낸다고 한다. 

https://docs-multiplayer.unity3d.com/netcode/current/components/networktransform/

 

NetworkTransform | Unity Multiplayer Networking

Introduction

docs-multiplayer.unity3d.com

 클라이언트 네트워크 트랜스폼은 따로 만들어 주어야 하는듯 싶다. 

 멀티 게임 처럼 따로 움직인다. 아 먼가 이루어 지고 있다. 

 소소한 버그가 있는데 이거는 영상이 진행되면서 해결이 될꺼다. 하루에 20분씩 꾸준히 하면 다 들을수 있을듯 싶다. 이제 6일치 정도 남았다.

 isOwner라는 중요한 서버에서 중요한 게념이 나온다. 플레이어가 여려명일때 자기만 조작하도록 만드는 거다. 강의를 두세번 정도 반복해서 서버에 기본 개념을 잡고 가야 할듯 싶다. 이게 중간중간 서버에 대한 개념설명이 나오기 때문에 계속 반복해서 영상을 보고 숙지를 해야 할듯 싶다. 

자꾸 뒤로 가는데 이게 왜 적용이 안되는지 모르겠다. 버그만 좀 수정하고 가자. 

 이걸 추가해 준다. 업데이트에 이런식으로 new를 박으면 나중에 가비지 컬랙터가 열일하게 되지만 별수 없다. 

 여튼 잘 동작한다. 

 결국 실시간 서버 통신까지 해야 하는 회사에 취업을 하게 되는듯 싶다. 서버에 대한 지식이 낮아도 되는 턴제 게임을 만들다보니 실시간 서버통은 잘 모른다고 했었는데도 뽑혀부렀다. 공부를 출근할때까지 할수 있는 한도내에서 다 하고 가야 할듯 싶다. 

 싱글톤에 접속하는 거는 싱글톤이라고 하면 되는듯 싶다.

 네트워크 애니메이터라는 것이 있는듯 싶다. 

 회사 다니면서 언리얼하고 스파인 애니메이션 둘을 익힐 필요가 있다. 첫월급이랑 해서는 빚진거 갚아야 하니까 일단 한 3개월 이후 부터 공부를 하면 될듯 싶다. 일단은 회사에 적응하는게 먼저다. 

 요거 오류가 뜨는거 해결을 해야 할듯 싶다. 호스트 버튼을 눌렸는데 실행이 안된다. 

 그냥 무시하고 넘어가도록 한다. 어차피 강의니까 개념만 익히면 충분하다. 

 길이를 전송하는 것까지 해서 1시간 10분 컷이 나는듯 싶다. 네트워크 베이어블이라는 새로운 개념이 나온다. 

 아 거의 엔진을 새로 배우는 느낌이다. 

 별다른 언급이 없으면 에브리원 서버가 디폴드 값이라고 한다. 이거 이거 이것만 해서 한 여려번 반복을 해야 할듯 싶다. 한번에 이 개념을 가져갈수는 없을듯 싶다. 잠깐 여기서 좀 쉬었다가자. 

 Lerp 라는 새로운 개념이 나오는데 둘 사이를 선형 보간해주는거라고 되어 있다. 일단은 넘어가고 두번째 복습할때 이거의 의미를 파악을 해야 할듯 싶다. 

 유니티도 배울께 쌓여서 언리얼로 넘어가는건 조금 시기 상조일꺼 같고 스파인 애니메이션 정도만 익혀두면 될듯 싶다. 모델링 보다는 애니메이션에 초점을 맞춰야 겠다. 

 트라이 게임 오브젝트라는 생소한 개념이 나온다. 

 따라다니지 않는 버그가 있다. 멀 잘못 했으려나. 

 자고 내일 해야 겠다. 

 오류가 떠서 그런거 같으니까 하나하나 해결하면 될듯 싶다. 한번에 성공하기는 쉽지가 않다. 매일 조금씩해서 일단 맛만 보고 가고 그 이후부터는 주말마다 반복해서 연습을 해야 한다. 한 10번쯤 반복해야 아 이제 좀 알꺼같다 이 단계까지 올수가 있다. 

 버그가 없어도 안따라다니는데 이건 그냥 내가 직접 구현을 해야 할듯 싶다. 

 업데이트문 자체가 실행이 안된다. 

 코루틴으로 바꾸니까 해결이 됬다. 

 잘 작동한다 속행하자. 가끔 전혀 이상한 방식으로 해결될때까 많다. 

 버그가 생기는 거를 해결해야 한다. 영상을 따라하면 해결되는 거라서 문제가 없을듯 싶다. 

 C#도 함수형 언어들처럼 함수를 집어넣을 수 있도록 바꼈나 보다. 예전에는 Action만 됬었는데 void도 가능해졌나 보다. 

 이제 클라이언트 정보를 기록할수 있도록 하는 걸 만들면 될듯 싶다. 

 2D를 안쓰다 보니 이런게 있는지 몰랐다. 

 폴리곤 콜라이더 2D를 설정해 준다. 

 네트워크 프리팹은 여기에 등록을 해주는 걸로 바뀌었다. 

 서버의 경우에는 컴포넌트를 접근할때 오류가 나서 튕기지 않도록 트라이 컴포넌트를 쓰는가 보다. 

 리지드바디를 붙이면 문제가 해결이 되는 건 또 처음 본다. 

 아주 잘 작동한다. 지금은 생각없이 따라해 보지만 몇번을 반복해서 따라해서 해당 원리를 익혀야 할듯 싶다. 

 안먹어지길래 식겁했는데 그냥 접촉이 안좋은 거였다. 이제 한 반정도 온거 같다. 

 한 5일에서 6일 정도 분량이 남은듯 싶다. 첫도전은 시간이 좀 걸린다. 그 다음 복습부터는 주기가 점점 짧아진다. 머든 한번에 되는것은 없는 편이다. 

https://docs-multiplayer.unity3d.com/netcode/current/advanced-topics/object-pooling/index.html

 

Object Pooling | Unity Multiplayer Networking

Netcode for GameObjects (Netcode) provides built-in support for Object Pooling, which allows you to override the default Netcode destroy and spawn handlers with your own logic. This allows you to store destroyed network objects in a pool to reuse later. Th

docs-multiplayer.unity3d.com

 왜 유니티 밖에서 불러와야 하는지는 모르겠지만 여튼 복사해서 붙여 넣어 준다. 

 주말마다 반복해서 복습해서 확실히 숙지하려면 꽤 시간이 걸릴듯 싶다. 

 여기서 부터 막혀서 이것부터 해결하고 가야 할듯 싶다. 

...

...

...

 으음. 일단 자동으로 랜덤하게 푸드를 뿌리는 거는 건너 띠도록 해야 겠다. 

 복습할때도 이부분은 건너 뛰어야 할듯 싶다. 

 분량을 줄여 두어야 반복을 하기 편하다. 

 강의 동영상에서 코딩하는 방식이랑 일반적인 코딩방식이라는 어느정도 차이가 있다. 일반적인 코딩에는 가독성이나 코드 정리같은거를 틈틈히 하는 경향이 있다. 강의에서는 단순화 해야 하니 대부분 생략을 한다. 이 강의는 중간 중간 코드정리도 하는데 그때문에 강의가 2시간 30분이나 된다. 

 엑션을 만들어 놓고 이벤트를 등록해서 이벤트 발생시에 다른코드에서 등록해 둔 이벤트를 실행하는 방식으로 코드가 진행이 된다. 

 먼가 강의를 알꺼 같기도 하다. 한 두어번 반복하면 잘할수 있을듯 싶다. 

 이거 이벤트를 활용하는 방식을 잘 활용해야 할듯 싶다. 이게 FindObjectType의 경우에는 초기에 로딩을 하는 시간이 걸린다. 

 싱글톤 잘 안써서 몰랐었는데 이번에 좀 배워가야 할듯 싶다. 

 요렇게 싱글톤을 받아서 쓸수 있는듯 싶다. 

 아 이거 리콰이어 컴포넌트 어떻게 쓰는지 늘 궁금했는데 이번에 궁금증이 풀이는듯 싶다. 

 싱글톤은 이렇게 실행시키면 된다. 

 요 뒤에 서버나온거 보고 가면 될듯 싶다. 2/3는 지나온듯 싶다. 31까지 하면 되고 복습은 주말에 하면 될듯 싶다.

 서버작업에는 트라이 겟컴포넌드를 쓴다. 이거 말고도 트라이 케치를 많이 쓰는 듯 싶다.

 서버 알피시라는 새로운 개념이 등장한다. 

 직렬화를 해야 한다고 하는데 일단은 머가 먼지 모르니까 그냥 따라하고 2회차때 좀더 딥하게 알아보아야 할듯 싶다. 

 서버까지만 어찌 어찌 하면 다시 애니메이션에 집중해도 될듯 싶다. 

 근데 이거 완벽하게 이해하려면 시간이 좀 걸릴꺼 같다. 

 머가 먼지 모른채로 그냥 따라하고 있는 중이다. 그나저나 으음 이게 회사 가면 왠지 해멜꺼 같긴 하다. 턴제 게임 제작자들이 일반적으로 서버 능력이 실시간 게임 만드는 애들보다 좋지는 않다. 턴제 전략은 서버 능력이 좋지 않아도 멀티게임을 만들수 있어서 그렇게 까지 열심히 공부는 하지 않는 경향이 있기 때문이다. 머든 자기가 필요한 부분까지는 하기 마련이다.   

 눌 체크 방식이 조금 바뀐듯 싶다. 

 먼가 랙이 발생하는거 같지만 일단 넘어가도록 한다. 

 오류가 있고 딜레이가 있는데 일단 이번 단계에서는 넘어가도록 하자. 복습때 해결하도록 해야 겠다. 

 앞에서 간의로 만들어 놓은 클라이언트 네트워크 트랜스폼을 일반적인 네트워크 트랜스폼으로 바꾸어 준다. 

 이게 으음 양이 많기 때문에 복습하기게 딱 좋지는 않다. 이번 한번만 경험하고 넘어가고 자세한 거는 회사 들어가서 배워야 하지 않을까 싶다. 

 호스트 클라이언트가 아니라 서버를 보냄으로써 치팅을 막고 보다 안정적으로 게임이 진행이 될수 있다고 한다. 

 함수 이름이 ServerRpc로 끝나야 오류가 안생긴다. 

 진짜 라이더를 벗어나면 코딩이 어려울 정도로 라이더의 기능은 편한듯 싶다. 다른 툴들을 그림판이나 메모장으로 만들어 버린다. 

 처음 보는 개념이 많아서 일단 다 이해하려면 꽤나 시간이 걸리지 않을까 생각이 든다. 

 

 

'프로젝트' 카테고리의 다른 글

홈페이지 만드는 사이트  (0) 2023.05.28
유니티 async 코루틴 대체  (0) 2023.05.27
네트워크 게임 유니티 도전  (0) 2023.05.20
C# 순수주의  (2) 2023.05.20
재취업했다  (0) 2023.05.19

WRITTEN BY
아이고이아

,