오늘은 구현되어 있지 않던 접속 시 Player들의 정보를 UI에 적용하는 기능을 구현하였습니다.

 

아직 완벽히 기능이 연결된 것은 아니나, 하나하나 기능별 구현은 완료 된 상태입니다.

 

남은 것은 멀티플레이 환경에서 접속 시 정보 동기화 및 UI 적용 뿐입니다.

 

 

하지만 이와 동시에 애석하게도 본 프로젝트를 중단하려 합니다.

 

여러 이유가 있는데 첫번째로, 시간을 낭비한다는 느낌을 크게 받았습니다.

자주 쓰는 것은 아니라고 하지만, 전혀 익숙해지지 않아 의욕이 서질 않았습니다.

그래서 일주일에 두번 있는 개발 날마다 딴짓을 하면서 시간을 축이는 일이 많아졌습니다.

또한 유니티 자체를 이해하고 사용하는데 시간이 너무 많이 요구되어 개발이 더뎌지기도 했습니다.

 

두번째로, 주변에서 다들 유니티 개발보다 다른 공부를 추천하였습니다.

입사 지원서를 작성할 때, 제가 지키던 기준들이 있습니다.

1. 3D 게임을 개발하는 업무.

2. C++을 사용(자체 엔진 개발)하거나, Unreal을 사용하는 프로젝트.

3. PC Online, Package, Console 게임 개발을 하는 프로젝트.

 

하지만 시간이 지날수록 취업을 하지 못하고 점점 더 초조해지면서 이러한 기준들을 지워나가면서 지원을 하다가 

최근 4개월? 동안 Unity를 쓰는 회사에 면접을 보고 떨어지면서 Unity 실력을 더 올리는게 다양한 회사에 지원하기

좋겠다는 생각에 Unity 개발을 시작했습니다.

시작 하면서도 많은 걱정이 있었고, 최근까지도 걱정을 하였습니다.

알고리즘이나 통신과 같은 좀 더 기초적인 부분을 갈고 닦는 것이 더 좋지 않을까? 라는 생각을 멈출 수 없었습니다.

 

그러다 비교적 최근, 다른 개발자 분들에게 상황을 설명하는 기회를 갖게 되었습니다.

다들 하나같이 "Unity는 개발 환경이 좋다. 굳이 지금처럼 안해도 회사 가서 배우면서 일하는게 가능하다." 라던가, "Unreal을 쓰는 회사들이 비교적 더 규모가 있고 대우가 좋다. Unreal을 쓰는 회사를 목표로 하라" 라던가,
"Unity 할 시간에 차라리 알고리즘을 공부해서 기초를 닦아라" 라는 말들을 들었습니다.

 

이를 듣고 Unity 개발을 정지하게로 마음먹었습니다. 

비록 지금 당장은 손을 떼지만, 언젠가 기회가 되면 다시 이 일지에 글을 적으면서 개발을 해보겠습니다.

기존에 Unity를 개발하던 화요일, 금요일에는 대략 3가지를 나눠서 해볼까 싶습니다.

 

하나는 기존에 개발하던 Unreal 개발.

다른 하나는 CodeForce와 같은 사이트에서의 Algorithm 문제 풀이.

이는 시간을 정해놓고 푸는 Online Test와

시간 제한 없이 문제 해결을 통해 개발 방법을 익히는 Online Judge를 병행 할 생각입니다.

나머지 하나는 생각중입니다.

원래는 DirectX12를 익혀볼까 생각 했는데 서버 프로그래밍을 할까 잠깐 고민되기도 하여 확정짓지 못했습니다.

 

아마 화요일 낮에 아직 미정인 작업을 하고 일찍 마무리가 되면 오후에 Unreal 개발을 진행할 것 같습니다.

토요일는 Online Test 1번과 Online Judge 한 두번을 진행하고 남은 시간에 Unreal 개발을 할 것 같습니다.

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.04.28 개발일지 2  (0) 2020.04.28
20.04.28 개발일지  (0) 2020.04.28
20.04.24 개발일지  (0) 2020.04.24
20.04.21 개발일지  (0) 2020.04.21
20.04.17 개발일지  (0) 2020.04.17

개발일지를 하나 적고 코드를 다시 보다가 간과한 사실이 하나 있습니다.

 

read 할 때는 중간에 다른 변수를 거쳐 가도 된다는 점입니다. 

 

그냥 모든 Host와 Client가 Write는 자유롭게 하되,
Read에서 한번 걸러주면 될 것 같습니다.

 

예를 들어 {bool, List<PlayerInfo>} 구조체를 만들어서
true면 Player 추가로 기존의 PlayerInfoList보다 새로 받아온 PlayerInfoList의 길이가 더 길 경우에만 read를,
fasle면 Player가 제거로 기존의 PlayerInfoList보다 새로 받아온 PlayerInfoList의 길이가 더 짧을 경우에만 read를.

 

아니면 이 둘을 별도의 변수로 두어도 될 것 같습니다.

 

계획을 바꿔, 금요일에는 이 방식을 구현해보고자 합니다.

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.05.01 개발일지 - 일시정지  (0) 2020.05.01
20.04.28 개발일지  (0) 2020.04.28
20.04.24 개발일지  (0) 2020.04.24
20.04.21 개발일지  (0) 2020.04.21
20.04.17 개발일지  (0) 2020.04.17

요 몇일 컨디션이 안좋은거 버티면서 운동 하던게 한달만에 한꺼번에 반동이 와버렸습니다.

 

내리 2시간을 유니티 업데이트 후에 2시간 정도 뻗어버렸습니다..

 

그래서 충분히 개발까지 할 수 있을법한 시간에 대략적인 계획만 잡게 되었습니다.

 

문서를 읽어보면서 나온 내용을 종합해보자면

1. OnPhotonSerializeView에서 Stream이 Writing 중이면 통신을 보내고, Reading 중이면 통신을 받는다.

2. OnPhotonSerializeView는 Update와 같이 수시로 호출이 된다.

3. OnPhotonSerializeView는 PUN2 내부 스크립트에서 호출되는 함수다. 의도적으로 호출할 수 없다.

이 세가지입니다.

 

제가 구현해야 하는 기능은 "Player들의 PlayerInfoList의 동기화" 입니다.

여기서 주의해야 할 점은

1. 새로운 Player가 접속했을 경우, 기존에 Data를 가지고 있는 Player의 PlayerInfoList를 read 해야지
본인이 가지고 있는 것을 write 해서 기존의 Player들의 PlayerInfoList가 날라가면 안된다.

2. 반대로 Player가 방을 나갈 때는 해당 Player의 PlayerInfoList가 write 되어야 한다.

이 정도 될 것 같습니다.

 

지금 생각하는 구현 방식은 대략 두가지 정도입니다.

1. Player가 각자 관리하는 트리거를 둔다.
Host-Client 구분은 쉽게 될 것 같으니, 이를 통해 Client는 평소에는 write 하지 않고 read만 하도록 한다.
Host는 항상 write와 read를 열어 둔다.

Client의 주도로 List가 바뀌는 경우(ex. ready, logout)에는 해당 이벤트가 발생 시 호출하는 함수에서 트리거를 열어둔다.

열린 트리거는 write 하는 부분 마지막에 자동으로 잠궈두도록 한다.

 

2. RPC로 PlayerList를 관리한다.

OnJoinRoom 이벤트에서 RPC 함수를 통해 자신의 PlayerInfo를 전달한다.

Update 함수에서 전달 받은 PlayerInfo가 존재하는 경우, 이를 초기화하고 PlayerInfoList에 PlayerInfo를 적용한다.

이 중 Host는 다시 RPC를 함수를 통해 최신 버전의 PlayerInfo를 전달한다.

 

가능하면 금요일에 이 방법들을 구현해보고 싶으나, 아직 확신이 없습니다.

때문에 몇일 더 구현 방법을 고려해보고 그럴듯하다는 확신이 생기면 개발을 하고자 합니다.

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.05.01 개발일지 - 일시정지  (0) 2020.05.01
20.04.28 개발일지 2  (0) 2020.04.28
20.04.24 개발일지  (0) 2020.04.24
20.04.21 개발일지  (0) 2020.04.21
20.04.17 개발일지  (0) 2020.04.17

일지가 늦었습니다.

 

요 근래 기관지가 안좋았었는데 원인을 몇가지 꼽아보자면

 

1. 가습기 청소를 안함

2. 본체 청소를 안함

3. 방에 먼지가 쌓임

 

이 세가지 때문이었습니다.

 

이 중 1번은 한달 전쯔음에 청소를 하였고, 조만간 가습기를 넣을 시기라 해결.

 

2번은 한달 반 전에 했으니 해결.

 

이제 3번을 해결하기 위해 방 내부 인테리어 및 구조를 변경할 계획을 잡았습니다.

 

원래는 개발을 쉬는 날에 하는 것이 좋으나, 운동 시간도 고려하다보니 불가피하게 오늘 개발을 하지 못했습니다.

 

요즘 취업에 대한 발작성 감정 폭발로 많이 힘들었는데 비록 몸은 쉬지 못하지만 기분이 좀 풀렸으면 합니다.

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.04.28 개발일지 2  (0) 2020.04.28
20.04.28 개발일지  (0) 2020.04.28
20.04.21 개발일지  (0) 2020.04.21
20.04.17 개발일지  (0) 2020.04.17
20.04.14 개발일지  (0) 2020.04.14

오늘은 PUN2에서 PhotonView Initialize 문제를 해결하고 Multiplayer들간 정보를 주고 받도록 하고자 하였습니다.

 

우선 PhotonView Initialize 문제인데,

Script가 Attach 된 Component에 PhotonView Script를 Attach를 한 뒤

GetComponent로 읽어왔어야 한다는 사실을 검색을 통해 알아냈습니다.

 

이를 통해 PhotonView를 정상적으로 받아올 수 있었고, 그러면서 RPC 함수 작동이 잘 되는 것을 확인했습니다.

 

다만 Multiplay 환경에서 Player들간 정보를 주고 받는 과정은 구조나 방법이 확정되지 못해 아직 개발하지 못했습니다.

 

금요일에는 이 부분을 정리하고, 가능하면 시도를 한번 해보고자 합니다.

 

 

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.04.28 개발일지  (0) 2020.04.28
20.04.24 개발일지  (0) 2020.04.24
20.04.17 개발일지  (0) 2020.04.17
20.04.14 개발일지  (0) 2020.04.14
20.04.10 개발일지  (0) 2020.04.10

저는 매주 화요일, 금요일에 Unity 개발을 합니다.

 

그리고 왜인지 모르겠지만, 이 날마다 Unity 업데이트나 VS 업데이트가 생깁니다.

 

오늘은 운이 나쁘게도 둘 다 있었습니다.

 

그리고 코로나의 영향인지 둘 다 업데이트 다운 속도가 50kb를 채 넘지 못하더군요.

 

장장 6시간 넘게 업데이트를 하였습니다.

 

그리고 잠깐 개발에 임했습니다.

 

RPC 함수를 예시대로 작성을 해보았습니다.

 

게임에 접속하면 Player number를 출력하도록 해보려 했습니다만, 
RPC를 호 출하는데 필요한 PhotonView 객체가 예시대로 했을 때 선언되지 않았습니다.

 

잠깐 찾아보았는데 아직 명확한 이유나 원인, 해결 방안을 찾지 못했습니다.

 

다음에는 이 부분을 해결하고, 플레이어 숫자를 출력하여 멀티플레이가 제대로 되고 있는지 확인하고자 합니다.

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.04.24 개발일지  (0) 2020.04.24
20.04.21 개발일지  (0) 2020.04.21
20.04.14 개발일지  (0) 2020.04.14
20.04.10 개발일지  (0) 2020.04.10
20.04.07 개발일지  (0) 2020.04.07

오늘은 PUN2에서 Session(Room)과 Client간에 정보를 주고받는 방식에 대해 조사를 해보았습니다.

 

찾아보니 RPC를 이용하는 방법이 있어 해당 자료를 읽고 공부를 하였습니다.

 

하지만 아직 어떻게 쓰는 것인지 정확히 파악하지 못하여 개발 단계로는 진입하지 못했습니다.

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.04.21 개발일지  (0) 2020.04.21
20.04.17 개발일지  (0) 2020.04.17
20.04.10 개발일지  (0) 2020.04.10
20.04.07 개발일지  (0) 2020.04.07
20.04.03 개발일지  (0) 2020.04.03

오늘은 PUN2를 이용해 버튼 이벤트에 따라 Session(PUN2 library 상 Room)을 생성, 참가 하는 함수를 구현하였습니다.

 

이 중, 생성 함수는 정상 작동을 확인하였으나 참가 함수는 정상 작동을 하는지 확인할 수 없었습니다.

 

이를 확인하기 위해서는 Session에 참가한 Player 정보가 표시되어야 할 것 같습니다.

 

문제는 이를 위해서는 Player들간에 Session과 관련된 정보들이 공유되어야 하는데, 아직 이에 대해 아는 바가 없습니다.

 

다음 주에는 이 부분에 대해 먼저 알아볼 것 같습니다.

 

이 외에 한가지 깨달은 점은, PUN2의 구조가 기본적은 P2P가 아니라는 점이었습니다.

 

프로젝트 빌드 전에 PUN2 서버에 연결을 해놓고, 게임이 실행되면서 이 서버에 접속이 되었는지를 확인해야 했습니다.

 

그리고 서버로부터 생성된 Room 정보를 받아야 합니다.

 

이로 봐서는 PUN2는 개발자에게 메인 서버를 제공하는 것 같습니다.

 

아무래도 처음 해보는 부분들이라 Milestone 안에는 구현하지 못할 것 같습니다.

 

하지만 어느정도 끝이 보이는 것 같아 마음이 놓입니다.

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.04.17 개발일지  (0) 2020.04.17
20.04.14 개발일지  (0) 2020.04.14
20.04.07 개발일지  (0) 2020.04.07
20.04.03 개발일지  (0) 2020.04.03
20.03.31 개발일지  (0) 2020.03.31

어째서인지 Unity를 하는 날에는 왜이리 몸이 무겁고 졸린지 모르겠습니다.

 

오늘은 PUN2 예시 코드를 보고 대략적인 계획을 세웠습니다.

 

제가 개발하는 게임은 lobby 개념이 따로 없이 room에 직접 연결을 합니다.

 

그렇기에 이벤트에 따라 JoinRoom, CreateRoom, ExitRoom 함수를 생성하고, 각 함수가 필요로 하는 call-back 함수를 선언해주면 될 것 같습니다.

 

다만 아직 각 함수가 선언되었을 때 Room 정보를 공유하는 방법을 찾지는 못하였습니다.

 

다음에는 이 부분을 중점적으로 연구할 것 같습니다.

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.04.14 개발일지  (0) 2020.04.14
20.04.10 개발일지  (0) 2020.04.10
20.04.03 개발일지  (0) 2020.04.03
20.03.31 개발일지  (0) 2020.03.31
20.03.27 개발일지  (0) 2020.03.27

오늘은 게임 시작 시 TextList에서 저장된 Profile 정보를 지정하는 기능을 구현하였습니다.

 

이는 예상대로 coroutine을 이용해서 쉽게 적용할 수 있었습니다.

 

개발 과정에서 abstract function을 선언하면서 TextListController가 abstract class가 되었습니다.

 

또한 최종 검수 과정에서 GameInfo가 제대로 호출되지 않는 문제를 발견하였습니다.

 

확인 결과 GameInfo와 ProfileInfo가 서로 반대로 저장 되어 있었습니다.

 

이를 바꿔주자, 문제없이 잘 작동하였습니다.

 

 

근 2주동안의 리팩토링 끝에, 겨우 원래 자리로 되돌아왔습니다.

 

milestone 상으로는 2주. 4번의 개발이 남았는데, 주말에도 짬짬히 시간을 투자하여 PUN2를 이용한 Multiplay 기능을 구현해보겠습니다.

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.04.10 개발일지  (0) 2020.04.10
20.04.07 개발일지  (0) 2020.04.07
20.03.31 개발일지  (0) 2020.03.31
20.03.27 개발일지  (0) 2020.03.27
20.03.24 개발일지  (0) 2020.03.24

+ Recent posts