[Unity] HTTP REST api 통신 모듈 구현
Unity/Network 2023. 2. 14. 10:33[Unity] HTTP REST api 통신 모듈 구현

개요사내에 딱 정해진 REST api 통신 모듈이 없다보니직접 만들고 다음 프로젝트가 진행될때마다겪었던 시행착오들을 상기하며  모듈을 보완, 발전 시키고 있다. 이제는 틀이 꽤 잡힌것 같아서한번 기록을 해둘려고 한다.  본문먼저 들어가기에 앞서,이 모듈은 Json을 쉽게 입출력 하기 위해Newtonsoft.Json 패키지를 사용하였다. 이 패키지에 대한 설명은 아래 글에 기록해뒀다. [Unity] JSON을 딕셔너리처럼 입출력하기Unity의 JsonUtility를 사용하다보면 커스텀 클래스를 쉽게 JSON으로 파싱할 수 있지만 원하는 변수 몇개만 JSON으로 파싱해주는 기능이나, 파싱 이후에 변수룰 추가, 삭제, 수정을 할 수 있게해주는 기trialdeveloper.tistory.com 먼저 Server..

[Unity2D] 공중 플랫폼(일방통행 플랫폼) 만들기
Unity/2D 2023. 1. 25. 17:45[Unity2D] 공중 플랫폼(일방통행 플랫폼) 만들기

개요 정말 오랜만에 2D프로젝트를 만들고있다. 무한 런게임을 제작중인데, 공중 발판을 제작하던 중 생각해보니 '캐릭터가 발판 아래에서 점프를하면 발판에 충돌하지 않고 위로 올라가야할텐데...' 라는 생각이 들어 찾아보게 되었고 해법을 정리한다. 본문 처음에는 이렇게 생각했다. 1. 플레이어가 발 아래로 캐스팅을 쏴서 발판의 콜라이더를 온오프? 2. 반대로 발판이 오버랩 검사를 해서 플레이어가 위에있을때만 콜라이더를 온? 하지만 연산이 걱정되기도하고 워난 플랫폼 게임이라면 항상있는 소위말하는 국룰이니까 찾아보면 있을것같아서 찾아봤다. 검색어를 어떻게 해야할지 난감해서 'unity 2d air platform' 'unity 2d up platform' 이런식으로 검색해봤는데 정답은 "One-Way Platf..

[Unity] TCP서버 위치 동기화 데드 레커닝 구현
Unity/Network 2023. 1. 9. 20:22[Unity] TCP서버 위치 동기화 데드 레커닝 구현

개요최근 작업중인 프로젝트에서 실시간 pvp모드를 개발하고 있었다.프로토타입은 포톤을 이용해서 동기화를 진행한 후 플레이를 해봤고,이제 회사의 TCP서버로 이전해 달라는 지시가 내려와 작업을 진행하였다. 포톤의 경우에는 TransformView 컴포넌트가 있어서위치동기화의 경우 아주 쉽게 구현할 수 있는데 직접 위치 동기화를 구현할려면 아무리 정보를 모아서 한번에 보낸다 해도매 프레임 패킷을 보내는거는 무리가 있다. 그래서 데드레커닝 기법을 활용하여 위치 동기화를 구현한 사례를 적는다.  본문마우스로 이동하는게임이었다면 꽤 간단한 문제였을것이다.예를들어 LOL이라면유저가 마우스로 목적지를 클릭하면 그때 한번만 출발지와 목적지를 동기화 하고양측 클라이언트는 결과가 같다는 보장이있는 길찾기 알고리즘을 사용하..

[Unity] Scene뷰에서 축 아이콘 없이 스크린샷 찍기
Unity/Tips 2022. 11. 1. 10:29[Unity] Scene뷰에서 축 아이콘 없이 스크린샷 찍기

개요 씬뷰에서 스크린샷을 찍고싶을때가 있다. 기즈모도 그리드도 전부 꺼둘수있지만 씬뷰 오른쪽 위 상단에있는 요녀석은 유니티 최신버전이 아니면 끄는기능이 없다. 참고로 유니티 최신버전이라면 아래 이미지와같이 간단하게 끄면된다. 이 글은 저 아이콘없이 깔끔하게 씬뷰를 캡쳐하는 방법이다. 본문 스스로 해결한 방법은 아니고 검색해서 좋은 방법을 알아내서 기록한다. 결과물을 미리 보자면 이와같이 코드로 기능을 만들어 에디터 메뉴로 등록해서 캡쳐하는 방법이다. 코드는 다음과같다. #if UNITY_EDITOR using System; using System.Collections; using System.Collections.Generic; using System.IO; using UnityEditor; using ..

[Unity] GoogleSheetsToUnity에셋 활용 동적 스크립터블 오브젝트 생성기 제작
Unity/C# 2022. 10. 25. 10:13[Unity] GoogleSheetsToUnity에셋 활용 동적 스크립터블 오브젝트 생성기 제작

개요 구글시트에서 데이터를 불러오는 작업을 하던중 데이터를 불러와서 기존 ScriptableObject에 덮어씌우기만 하지말고 있다면 덮어씌우고 없다면 생성하는 시스템을 만들고싶어졌다. 그래서 작업을 진행했고 해당내용을 기록한다. 사용한 에셋 https://assetstore.unity.com/packages/tools/utilities/google-sheets-to-unity-73410?locale=ko-KR Google Sheets To Unity | 유틸리티 도구 | Unity Asset Store Use the Google Sheets To Unity from Greener Games on your next project. Find this utility tool & more on the Unit..

[Unity] TCP통신에서 패킷이 누락되는듯한 문제 수정
Unity/TroubleShooting 2022. 10. 18. 10:10[Unity] TCP통신에서 패킷이 누락되는듯한 문제 수정

개요 프로젝트에서 PVP구현을 위해 서버통신을 작업하던 중 위치 동기화같이 빠르게 주고받아야 하는 데이터의 패킷들이 일부 누락되는것 처럼 보이는 문제가 발생했다. (서버는 자바스크립트) 완벽해결은 아니지만 해결방법을 기록한다. 문제 위 설명대로 패킷이 누락되는것처럼 A클라이언트에서 보낸 패킷 일부가 B클라이언트에 도착하지 않았고, 서버쪽에서 디버그를 해봐도 서버에조차 패킷이 도착하지 않았다. 처음엔 통신문제인줄 알아서 여러시도를 해봤지만 전부 아니었고 답은 네이글 알고리즘 때문이었다. 네이글 알고리즘이란 간단히 이해한대로 적어보면 패킷이 만들어지는대로 보내지 않고 패킷을 버퍼에 보관하다가 ACK를 수신하면 나머지 패킷들을 한번에 전송해줘서 결론적으로는 통신량을 줄이는 방법이다. 해결 사실 명쾌한 해결은 ..

image