유니티 메뉴에서 Edit > Preferences를 눌러 설정 진입
External Tools > External Script Editor 에서 Rider를 선택해주자
예? CommnadNotFoundException?
이전에도 본 적 있던 오류라 참고 블로그 를 참고하여, 일단 npm install -g yarn
을 실행했다. 그랬더니 오류 메시지가 바뀌었다.
아마 remote sign인가? 뭔가 설정하는 곳이 있었던 것으로 기억한다. 또다른 참고블로그를 보고 다음 작업을 수행.
- IDE 터미널에서
ExecutionPolicy
입력 후 엔터로 확인. (아마 Restricted로 나올 것.)- Windows PowerShell을 관리자 권한으로 실행.
Set-ExecutionPolicy RemoteSigned
입력- 실행 규칙 변경~ 이라는 메시지가 나오면
[A]모두 예(A)
선택- 파워쉘에서 다시
ExecutionPolicy
입력하여 변경 사항 출력을 확인
튜터님은 드래그 앤 드롭 하셨을 때 저 Canvas 그대로 속이 찬 큐브 모양으로 'Canvas' 라는 오브젝트가 복사되었는데, 나는 자꾸 이미지처럼 빈 큐브에 (Clone) 이라고 떴었다.
-> 엔진을 실행중이어서 그렇다. 실행 중에 한 작업이라 멈추고 나면 저 (Clone)은 사라진다.
엔진을 끈 다음에 드래그 앤 드롭을 하니 정상적으로 튜터님과 똑같이 나왔다.
이렇게 핸들러를 하나씩 만들면
- 유니티 상에서도 UI를 추가해 주고
- 해당하는 함수도 만들어 주고
- 버튼에 이벤트를 등록해주면 된다.
우리가 배운 것 & 배울 것
디렉토리 구조, 패킷 구조, 교환, 세션, DB, 게임 및 유저 인스턴스, 인스턴스 관리, 상태 동기화, 레이턴시 관리, 레이턴시 마스킹 ...
몽땅 가져다가 이것저것 만들어 보자. 하다보면 원하는게 나오지 않을까. 😋
검색결과 상단이 다 JAVA 얘기라서 좀 슬펐다
참고 블로그 에서 내용과 이미지를 가져왔다.
데이터 직렬화: 컴퓨터의 데이터 객체를 저장 매체에 저장할수 있는/ 네트워크를 통해 전송할수 있는 형태로 변환하는 것
데이터 역직렬화: 디스크에 저장된 데이터를 읽거나 네트워크 통신으로 받은 데이터를 다시 객체로 변환하는 것
안 된다. 직렬화-역직렬화를 안 하면 참조 형식 데이터를 사용할 수 없기 때문. 디스크에 저장하거나 통신을 할 때는 값 형식 데이터만 가능하다.
-> 참조 형식 데이터는 실제 데이터 값(리터럴)이 아니라 그 값이 들은 메모리의 주소만 가지고 있다.
어떤 개발 언어를 선택하든 자료형은 크게 값 형식(원시형)과 참조 형식이 존재한다. 그리고 이 자료형에 따라 메모리 구조 또한 두 가지로 나뉜다.
-> 값 형식은 Stack 영역에 메모리가 쌓이고 직접 접근이 가능한데, 참조 형식 변수를 선언하면 Heap 영역에 메모리가 할당된다.
-> 그리고 Stack 영역에서는 이 Heap 메모리를 참조하는 구조로 되어 있다.
- Stack: 함수 호출 시 생성되는 지역변수, 매개변수가 저장되는 영역으로, 프로그램이 자동으로 사용하는 임시 메모리 영역.
- Heap: Stack과 비슷하지만 사용자에 의해 관리되는 임시 메모리 영역.
즉, 사용자가 필요에 의해 동적으로 메모리를 할당할 때 사용된다.
역직렬화 없이 파일에 저장한다고 가정하면, 주소값만 갖고 들어간다는 게 된다. 그런데 이 주소값은 프로그램이 종료되고 나면 할당 해제되어 GC에게 쓸려가버리기 때문에 무의미해진다. 다음번에 그 값을 찾아가봐야 다른 값이 있거나 비어있거나 하는 해프닝이 일어나게 된다.
-> 그래서 이런 일을 피하기 위해 직렬화는 참조형들이 가진 그 주소값에 있는 실제 값 리터럴들을 다 끌어모아 바이트배열로 붙여줘서 전송한다!
(참조형의 주소 값에서 실제 값들을 다 읽어 끌어모아 준다.)
이 직렬화의 방식은 크게 두가지가 있다.
사람이 읽을 수 있는 형태로, 저장 공간의 효율 성이 떨어지고 파싱 시간이 오래 걸린다. 데이터 양이 적을 때 주로 사용하고, 최근엔 JSON 형태로 많이 직렬화를 한다.
XML, CSV, JSON,YAML 등
얘는 사람이 읽을 수 없는 형태다. 파싱 속도가 빨라서 데이터 양이 많을 때 주로 사용한다.
ex) 프로토콜 버퍼, 이미지, 오디오, 영상 등...
TCP 에코서버와 크게 다르지 않은 것 같은데, 약간 달라진게 있다.
TCP 에코서버의 바이트 배열이 TOTAL_LENGTH_SIZE 4byte, handlerID 2byte였고 메시지가 가변이었다면, handlerID 대신 패킷타입이 들어간 정도다.
이렇게 생겼었다.
이렇게 생겼다.
웹소켓 때도 봤겠지만, 대강 이런 식으로 생겼다. 이게 common frame이라서 '앞으로 이 구조로 주고 받겠다' 라는 얘기다.
이는 일종의 어뷰징 방지용으로 유저가 몇 번 호출을 했는지 체크하는 것.
예를 들어 유저가 2번 호출했는데 다음 호출이 4번째로 찍히면 중간에서 패킷이 유실 되었다는 얘기. 그러면 중간 패킷을 다시 보내줘야 한다.
또는 7번, 8번 이후에 갑자기 99번 100번이 오면 어뷰징이거나 뭔가 정말로 문제가 있다는 신호.
??????
분명히 이렇게 짜고 export - import 시켰는데,
여기서 server.listen이 작동을 안했다. 포트번호를 몇 번으로 해도 계속 permission denied가 떴다.
수없이 헤매며 돌아본 끝에 .env에서 원인 발견. 포트번호에 세미콜론 하나 붙인 게 화근이었다. 지우니 잘 동작했다.
하...... 분명 Git for Windows를 깔았는데 이건 또 대체 뭐야. 왜 적용이 안돼? 일단 다음을 시도해 보았다.
- Git for Windows 재설치
- VS Code 재실행
- 컴퓨터 재부팅
뭔진 모르겠는데 셋 다 하고 났더니 일단 해결되었다.
그러나 근본적인 트러블은 아직 해결되지 않았고, 크게 두 가지였다.
커밋 푸쉬를 할라니까 이 메시지가 한글 버전으로 뜨질 않나, Learn More를 눌러봐도 달라지는 것도 없고...
참고 문서 여기를 읽어 보니까 .gitconfig
파일에 user에 관한 정보가 없어서 셋업을 해줘야 하는 것 같았다. 이 이후로는 참고 블로그 글도 참고하여 결론적으로 해결했고, 시도 단계는 다음과 같다.
- PowerShell 기반인 VS Code 터미널에
~/.gitconfig
입력- .gitconfig 파일 확인해서
[user]
관련 데이터 확인 (아무것도 없었음)- 터미널에
git config --list --show-origin
입력하여 한번 더 확인
(사실 이건 뭔지 잘 모르겠다)git config --global user.name "name"
입력하여 username 설정git config --global user.email "email@domain.com"
깃허브 계정 이메일 입력하여 useremail 설정
위 단계를 시도했더니 깃헙 관련하여 로그인이나 인증 메시지가 떴고, 문제들이 해결되었다.
VS Code의 깃헙 계정 로그인도 무사히 완료되었다.