타이머를 일단 타이머기능만 있게 제작했다. 

단순하게 숫자 입력하고 줄어드는 기능만 있는 상태인데 구글에 앱 출시를 해보고 싶어서 먼저 시작하게 되었다.

추가 기능들은 업데이트를 진행할 예정이다.

 

 

참고 영상

https://youtu.be/RNYQZ0h4e-c?si=yV2WSQuMac-A4wiB

 

 

1. 구글 플레이 콘솔 가입하기

https://play.google.com/intl/ko/console/about/?utm_source=google&utm_medium=cpc&utm_campaign=Console2020-Branded&utm_term=%EA%B5%AC%EA%B8%80%20%ED%94%8C%EB%A0%88%EC%9D%B4%20%EC%BD%98%EC%86%94%7ce&utm_content=676107993829&gad_source=1&gclid=CjwKCAiAhJWsBhAaEiwAmrNyq_hszTz3csnTtzDH5Idj6VCDIbATvYuKNRcdiW4jvxgeYERnIrprShoCz2UQAvD_BwE

 

Google Play Console | Google Play Console

앱과 게임이 성장할 수 있도록 사용자에게 도달하고 사용자 참여를 유도하는 데 도움이 될 도구, 프로그램, 통계를 이용하세요.

play.google.com

 

이것저것 시키는 거 입력하고 25달러 결제해야한다.

(...)

33000원 정도.

 

2. 영상보면서 따라했고 광고는 안 할 예정이라 그 전부분까지만 했는데 프로덕션부분이 테스트를 지나야 할 수 있어서 현재 테스트 단계이다.

'Unity > 타이머' 카테고리의 다른 글

타이머 개발(1)  (2) 2023.12.22

포폴도 만들 겸 해서 하나 제작해보려는 가벼운 마음으로 시작한 타이머 제작일지

 

요즘 공부하는 릴스를 많이 보는데 거기 보면 공부시간을 재주는 시계를 많이들 사용하는 것을 보고 나도 하나 살까?하다가 걍 하나 만들어보자 싶어서 시작하게 됐다.

 

--------------------------------타이머 개발 일지---------------------------------

'Unity > 타이머' 카테고리의 다른 글

타이머 앱 출시 준비(2)  (1) 2023.12.22
파일 경로 아래에 있는 모든 파일을 삭제한다
rmdir /s 파일경로

 

AttributeError: 'str' object has no attribute '_key'

 

pip install importlib-metadata==4.4

release17에서 정상작동 합니다.

'Unity ML-Agent' 카테고리의 다른 글

[미해결/mlagents yaml]  (0) 2023.11.03
mlagnets 환경 설정  (0) 2023.11.03
더보기

raise TrainerConfigError(f"Unsupported config {d} for {t.__name__}.") mlagents.trainers.exception.TrainerConfigError: Unsupported config 10000 for TrainerSettings.

빨간색으로 표시한 부분은 확인해보니 yaml파일에 summary_freq:10000에 숫자와 같은 부분이다. 다른 숫자로 바꿔가면서 실행시켜봤는데 똑같길래 빼고 실행시켰다. 빼도 문제는 안돼지만 요약 정보 기록이 안된다. 

'Unity ML-Agent' 카테고리의 다른 글

[해결]AttributeError: 'str' object has no attribute '_key'  (0) 2023.11.03
mlagnets 환경 설정  (0) 2023.11.03

Unity mlagents release 17을 사용하고 있습니다.

아래에 나오는 에러들은 mlagents-learn명령을 실행했을 때 나타난 오류들을 정리해둔 것입니다. 

환경이나 버전에 따라 다른 오류들이 발생할 수도 있습니다. 

anaconda에서 가상환경 설정하고 

#mlagents 설치
pip install mlagents==0.26.0

잘 설치됐는지 확인

pip show mlagents
pip show mlagents-envs

아래 결과창이 나오면 성공

#파이썬 설치
conda install python=3.7

python을 3.7버전으로 설치해줍니다.

이렇게 설치하고 버전을 확인해봤는데 3.7.16 버전이 설치됐습니다. 3.7.x면 문제없이 작동하기에 그대로 사용해줍니다.

 

파이썬 버전이 다를 경우 아래 에러가 발생함. chatGPT에 물어봐도 파이썬 버전이 달라서 문제라는 말은 해주지 않음. 구글링해서 비슷하게 에러난 사람의 경우를 보고 따라했음.

chatGPT에 파이썬 버전이 다를 경우 나타날 수 있는 에러라는 질문을 하면 그렇다고 대답해줌.

TypeError: Invalid first argument to `register()`. typing.Dict[mlagents.trainers.settings.RewardSignalType, mlagents.trainers.settings.RewardSignalSettings] is not a class.

python 버전 확인

python  #파이썬 인터프리터 실행

>>>import sys
>>>print(sys.version)

>>>exit()  #파이썬 인터프리터 종료

AssertionError: A compatible version of PyTorch was not installed. Please visit the PyTorch homepage (https://pytorch.org/get-started/locally/) and follow the instructions to install. Version 1.6.0 and later are supported.
#파이토치 버전 호환 문제

보이는 것처럼 1.6.0버전 이상을 사용해야 한다.

#파이토치 업그레이드(최신버전)
pip install --upgrade torch

ModuleNotFoundError: No module named 'six'
#six모듈이 현재 파이썬 환경에 설치되어 있지 않음
#six 모듈 설치
pip install six

#mlagents학습 시작
mlagents-learn

아래 사진과 같이 결과 창이 나오면 mlagents는 정상적으로 작동하는 것입니다. 

 

'Unity ML-Agent' 카테고리의 다른 글

[해결]AttributeError: 'str' object has no attribute '_key'  (0) 2023.11.03
[미해결/mlagents yaml]  (0) 2023.11.03

게임 오브젝트에 추가할 컴포넌트

Camera Setup

Photon View

Photon Transform View

Photon Animator View

 

 


 

Photon View 컴포넌트

 

Photon View는 각 컴퓨터들의 다양한 인스턴스들을 하나로 연결해 주며 컴포넌트들을 관창하고 어덯게 관찰할 지를 정의해줍니다.

View ID - 네트워크 상에서 구별 가능한 식별자( 같은 식별자를 가진 오브젝트는 같은 오브젝트로 취급하고 서로 동기화한다)

Observables Synchronization - 값을 관측하고 동기화하는 방식을 변경할 수 있습니다. 

  • Off - 동기화하지 않습니다.
  • Reliable Delta Compressed - 상대방이 최근에 수신한 값과 동일한 값은 송신하지 않습니다.
  • Unreliable - 패킷의 수신 여부를 검사하지 않고 지속적으로 송신하비다.
  • Unreliable On Change - Unreliable과 동일하나 값의 변화가 감지될 때만 송신합니다.

Reliable Delta Compressed 또는 Unreliable On Change를 사용하면 대역폭을 아낄 수 있습니다.

Photon View를 거치지 않고 RPC등의 별개의 방법으로 값을 동기화할 경우에도 Off를 사용하여 대역폭을 아낄 수 있습니다.

Observed Components(n) - 리스트에 등록된 컴포넌트들의 변화한 수치를 관측하고 네트워크를 넘어서 다른 클라이언트에 전달할 수 있습니다.

 

Photon Transform View 컴포넌트

 

자신의 게임 오브젝트에 추가된 트랜스폼 컨포넌트 값의 변화를 측정하고, Photon View 컴포넌트를 사용해 동기화합니다.

현재 설정된 것은 transform의 위치와 회전을 동기화하도록 설정되어 있습니다. 위치, 회전, 스케일을 동기화할 수 있습니다.

 

자신의 로컬이라면 트랜스폼 컴포넌트의 속성값들을 감지하고 Photon View를 사용해 네트워크 너머의 리모트로 보냅니다.

자신의 리모트라면 Photon View를 사용해 송신된 로컬의 값을 받아 자신의 트랜스폼 컴포넌트에 적용합니다. 

 

+ 로컬 : 주도권이 자신에게 있음. 물리적으로 사용자의 위치에 존재하는 단말기나 프로그램, 오브젝트를 표현하는 단어

+ 리모트 : 주도권이 네트워크 너머의 타인에게 있음. 원격 접속을 통해 접근할 수 있는 단말기나 프로그램, 오브젝트를 표현하는 단어

 

❗❗Photon Transform View 컴포넌트는 Photon View컴포넌트 없이는 동작할 수 없습니다.

 

Photon Animator View 컴포넌트

 

 

이 컴포넌트를 정상적으로 작동하게 하려면 오브젝트에 Animation이 적용되어 있어야 합니다.

네트워크를 넘어 로컬 게임 오브젝트와 리모트 게임 오브젝트 사이에서 애니메이터 컴포넌트의 파라미터를 동기화하여 서로 같은 애니메이션을 재생하도록 합니다.

 

로컬일 때는 자신의 애니케이터 컴포넌트의 파라미터들을 관측하고 Photon View를 사용해 다른 클라이언트에 있는 자신의 리모트에 전달합니다.

리모트일 때는 네트워크를 통해 로컬이 건넌 수치들을 받아 자신의 애니메이터 컴포넌트의 파라미터를 덮어쓰기합니다.

 

동기화를 원하는 파라미터는 드롭다운 메뉴를 클릭하고 Discrete 또는 Continuous로 동기화 홉션을 설정

Discrete는 값의 연속적인 변화를 Continuous에 비해 잘 반영하지 못하지만 대역폭을 아낄 수 있습니다.

 

 

 

 

'Unity > 얼음땡' 카테고리의 다른 글

Photon을 이용한 Unity 네트워크 게임 개발 책 추천  (0) 2023.07.26

바쁜 사람은 첫 번째 구분선부터 확인을 하시는 것을 추천드립니다.

 

기존에 유니티를 사용해서 다양한 컨텐츠 및 게임을 개발한 경험이 있었다.

 

새롭게 서버통신을 이용한 게임을 개발하고 싶었는데 서버통신을 이론적으로만 접했고 직접적인 경험을 한 실습이라고는 와이어샤크를 이용한 패킷정보확인과 같은 기초적인 부분을 했었다.

 

유니티를 3년을 써봐도 안 해본 거는 어렵다.

 

서버를 직접 개발하는 것은 '직접 개발'이라는 단어에서부터 경계심을 일으켜 고려하지 않았다.

그래서 찾아본 유니티에 지원되는 서버 프로그램들은 대표적으로 Photon이랑 한국에서 제작한(??)가 있다.

 

스팀게임에서 유명한 폴가이즈도 Photon을 이용했다고 해서 Photon으로 결정했다.

 

 

근데 이게 생각보다 정보도 적고 한국어로 설명해주는 사람들이 거의 없었다. 있어도 아예 0부터 시작하는 나한테는 잉? 이거는 어케하는건데 하는 부분이 너무 많았어서 책에서 참고하는 방식을 선택하게 되었는데 책들도... 너무 오래되서 Pun2를 사용하는 현재에서는 맞지 않는 코드들만을 보여주고 있었다. 

 

처음에는 Pun Classic을 사용하느라 오류가 없는 코드들이었지만, Pun2의 존재를 알고 난 뒤에 스크립트를 이동시키자마자 classic에서는 정상적으로 작동하는 코드들이 에러로 바뀌는 모습을 보고 약간 현타왔었다.

 

내가 참고해던 책은 "멀티플레이 게임 제작을 위한 유니티 네트워크 게임 만들기"라는 책이었는데 얘는 한국 정발이 2015년이었다. 상당히 오래된걸 알았지만 그래도 유니티 네트워크를 다루는데 포톤을 이용하는 책이 없어서 눈물을 머금고 빌린 책이었다. 결과적으로 코드에 있는 에러를 수정하는 데만 이틀이 걸렸다. 

 

Photon Classic에서 Photon2로 넘어오면서 없어진 메소드들이 많고(특히, Friend관련 메소드들...) 남아있더라도 매개변수가 변경된 경우가 대부분이었다. 그리고 소문자를 대문자로 바꾼 함수들도 많아서 전부 확인하면서 수정해야 했다.

 

이 글을 남기게 된 이유도 여기서 나온건데 나처럼 시간 버리는 사람이 없었으면 해서 유니티에서 Photon2를 이용하는 책들을 몇 개 남긴다.


 

"절대강좌! 유니티5 Unity 전문 개발자가 알려주는 효과적인 게임 제작기법" - 이재현(위키북스) Pun 사용인데 생각보다변경되는 부분이 크지 않음(Friend를 구현하지 않아서...일 듯)

"레트로의 유니티 게임 프로그래밍 에센스" - 이제민(한빛미디어)

   ⬆이 마지막 책은 특이하게 두 개의 책으로 구성이 되어 있다. 1권과 2권 모두 같은 목차를 공유하지만 5부(11장)이전은 1권에 수록되어 있고 이후로는 2권에 수록되어 있다. Photon2를 사용하는 부분을 보려면 2권을 확인해야 한다! 혹시 구매를 하게 되는 경우에는 필수로 참고하길 바란다.

 

 

이외에도 많은 책들이 있을 수도 있지만 일단 내가 확인한 책은 여기까지이다.

또, 구분법이라고 하면 Photon Classic을 이용하는 책에서는 using Phton.Pun;이나 using Photon.Realtime; 네임스페이스 들을 전혀 사용하지 않는다. 책을 봤는데 이 네임스페이스가 있는 코드면 Photon2를 사용하고 있으니 안심하고 구매해도 될 것 같다.

 

 

 

'Unity > 얼음땡' 카테고리의 다른 글

Unity Photon 컴포넌트  (0) 2023.07.27

+ Recent posts