겨울팥죽 여름빙수
article thumbnail
Firebase Functions, 인앱 검증하기

1. 구글 개발자 콘솔에서 인증서 발급하고 다운받기(json 키) 위 이미지 대로, [구글 플레이 콘솔 api액세스 -> 새서비스계정만들기 -> 서비스계정 생성 -> 계정 key다운로드(json파일) -> 재무데이터 권한 주기] 를 완료하면 준비는 끝.!! 키 json 파일을 다운받아 열어보면, 위와같은 텍스트 들이 있다. 2. Firebase Functions 설정 Firebase 계정을 만들고, 내 컴퓨터에도 firefunction기능을 쓸 수 있도록 세팅. 세팅은 구글페이지 가이드를 참고 바람. https://firebase.google.com/docs/functions/get-started?hl=ko 시작하기: 첫 번째 함수 작성, 테스트 및 배포 | Firebase Documentation Ch..

article thumbnail
개인 PC 서버, 내부 IP, 외부 IP 확인하기.(IPTIME)

게임 테스트 개발 할 때, 서버 테스트 비용을 줄이기 위해, 내 개인 피씨를 서버로 띄우는 경우가 많았다. 서버 개발 초보이다 보니, 내 IP주소 설정 및 확인하는데 몇시간 걸린 듯 하다. 그래서 올리게 됐다. 서버를 띄울 때, IP 설정을 잘못하면 위와 같은 에러메시지가 나온다. 이때 만약 IPTIME을 사용 중이라면, 인터넷 주소창에 [192.168.0.1]을 쳐서 아래와 같은 화면을 띄우도록 하자. 창이 뜨고 나면, 관리도구를 누르자. 시스템 요약 정보에 들어가면, 외부 IP주소가 있다. 이 주소로, 외부 클라이언트가 접속 할 수 있다. 따로 메모 해 두도록 하자. 그럼 내부IP주소는 [192.168.0.1]인가? 라고 첨에 생각했는데, 아니다. 아래 그림을 보도록 하자. [고급 설정 -> 내부네트..

article thumbnail
c#, SocketAsyncEventArgs 메모리 릭 현상

SocketAsyncEventArgs 객체를 이용해 데이터를 송수신 할 때, Buffer를 사용하게 된다. 문제는 이 Buffer를 사용하고 조치를 취하지 않으면, 가비지 컬렉션이 알아서 가져가지 않는다. 맨 처음 서버를 실행시키면, 100메가 정도 사용하던 메모리가 좀 오래 되면, 1기가 넘게 쌓여있다. 대충 계속 살펴보면 1~2기가 사이를 왔다갔다한다. SocketAsyncEventArgs 메모리 릭에 관련해 검색 해보니, SocketAsyncEventArgs객체를 풀링해서 사용해야 한다고 돼 있고, 또한, 사용 후 Dispose()함수를 호출 해, 리소스를 날려줘야 가비지 컬렉션이 수거 해 간다고 한다. 정리 해보면 SocketAsyncEventArgs 사용 후, Completed에 [-=]으로 콜..

C#, 외부 프로세스 실행

한 서버에서, 채널관리를 위해, 서버 프로세스를 포트를 달리해, 여러 개 띄우고 있다. 이때, 이런 서버 프로세스 관리를 위한 프로그램을 따로 두는데, 그곳에서 자동으로 서버 프로세스를 띄우고 있다. Process process = new Process(); #if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX //ios 운영체제 process.StartInfo.FileName = "mono"; process.StartInfo.WindowStyle = ProcessWindowStyle.Normal; process.StartInfo.CreateNoWindow = false; process.StartInfo.UseShellExecute = true; process.StartInfo..

c# 구글 인앱 iap 서버 검증 코드

최근에 DeveloperPayload(개발자가 임의로 만든 payload값) 기능이 구글에서 없어졌습니다. 때문에 해당 부분을 삭제했습니다. (2021-1-8) 서버 검증을 위해, 구글에 계정 만들고, 개발자 페이지에서 p12 파일 만들고 그러는 거는 검색해 보시면 쉽게 보실 수 있어요. 아래 페이지에 잘 정리 돼 있더라구요. http://theeye.pe.kr/archives/2570 여기서는 c#으로 서버를 개발 했을 경우, 서버 검증하는 코드를 넣었습니다. 서버 검증은 3가지 방법이 있는데, https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth#oauth-2.0-protocol 여기서는 [ServiceAccountCreden..

article thumbnail
윈도우 서버 TCPNoDelay, TcpAckFrequency 설정

일부 게임에서는 유저와의 통신이 매우 빠르게 이루어져야 하는 것들이 있다. 롤, 스타크래프트 등 빠른 반응을 보여야 하는 경우, 패킷을 모아서 보내는 것이 아닌 바로바로 보내도록 설정해야 한다. 기본적으로 윈도우 운영체제에서는 패킷을 버퍼에 모아, 보내는 것이 효율이 좋아 그렇게 하도록 돼 있다. 그래서 아래와 같이 세팅을 하지 않으면, 핑이 들쑥날쑥 할 때가 많이 있다. 앞서 말 한 것 처럼, 빠른 반응성을 보이고 싶다면, TCPNoDelay, TcpAckFrequency 값을 레지스터에 등록해야 한다. 1. regedit 위 그림과 같이 regedit을 쳐 레지스트 창을 띄운다. 그 다음 아래 경로로 이동하도록 하자. 컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe..

c# 각도, 라디안, 벡터 간 변환

간혹 벡터(vector)를 라디안으로 변환하거나, 라디안(radian) 값을 각도(angle, degree)로 변환해야 하는 경우들이 생긴다. 간단한 코드지만, 매번 구현하는 것 보다 유틸리티 코드로 구현해 놓고 사용하면 꽤 편하다. //벡터를 각도로 변환 public static double VectorToDegree(Vector2 vector) { double radian = Math.Atan2(vector.y, vector.x); return (radian*180.0/Math.PI); } //벡터를 라디안으로 변환 public static double VectorToRadian(Vector2 vector) { return Math.Atan2(vector.y, vector.x); } //라디안을 각도..

article thumbnail
c#, 점 - 선분 간의 거리 구하기

물리, 수학적 처리를 하다보면, 점과 선분 사이의 거리를 구해야 할 때가 있다. 직선과 점의 거리와는 다르게 선분과 점 사이의 거리는 조금 더 까다롭다. 아무튼 중고등학생 때의 기억을 되짚어보면서 구현 해 보았다. 1. 원리 이해 선분 SE, 점 P가 있다. 우선 점 P를 SE로 수선의 발을 내렸을 때, 그 안에 포함 되는지, 아니면 밖에 있는지 구분해야 한다. 이것을 구분하기 위해선, 벡터의 내적을 이용해야한다. - 내적 > 0 이면, θ 90 - 내적 = 0 이면, θ = 90 즉 - (벡터 SE와 벡터 SP의 내적) * (벡터 ES, 벡터 EP) >= 0 이면 위 그림 왼쪽과 같이 수선의 발이 선분위에 존재한다. 그 외에는 - SP의 거리, EP의 거리 중 작..

article thumbnail
c# 다각형 무게 중심 구하기

게임을 만들다 보면, 특히 물리 관련된 기능을 구현하기 위해서, 다각형의 무게중심을 알아야 하는 경우가 생기기 마련이다. 나 같은 경우, 강체역학을 그대로 전부 적용하기 보다는 얼추 비슷하게? 구현하고 있다. 강체역학을 그대로 전부 적용하면 코드도 복잡하고, 성능상에도 좋지 않다고 판단해서이다. 물론 그렇게 해도 되는 게임이기에 가능한 얘기다. 다각형의 무게 중심을 구하기 위해서는 우선 다각형의 넓이를 알아야 한다. 아래는 다각형 넓이 공식이다. 이 넓이를 이용해 아래와 같이 무게 중심을 구할 수 있다. 이 공식을 바탕으로 코드를 작성 해 보자. 우선 다각형을 정의한 클래스부터 살펴보자. public class jdPolygon { public Listm_points = new List(); public..

article thumbnail
c# ibatis Mapper에서 <,>,<=,>= 비교연산자 사용

c# ibatis Mapper에서 비교연산자를 사용하면 아래와 같이 에러가 나는 경우가 있다. sql문법 상 문제는 아닌데, 아마 xml구조이다 보니 '