게임 서비스를 운영하다보면, 핸드폰 기기 시간을 수정해, 이익을 보려는 유저들이 많다. 보통 일정 시간 주기로 보상을 주는 기능이 들어간 경우, 그 시간값을 서버가 아닌 클라이언트에서 한다면, 유저는 기기시간 조절하는 것만으로도 보상을 빠르게 받을 수 있다. 서버에서 시간을 확인해 막으면 좋지만, 그렇게하기 여의치 않을 경우, Resume 시 보상을 받기 위한 버튼을 눌렀을 때 구글 표준시간과 비교해 처리하면 좋다. //구글 시간 가져오기 public async Task GetCurrentTime() { using (var client = new HttpClient()) { try { var result = await client.GetAsync("https://google.com", HttpComple..
한 서버에서, 채널관리를 위해, 서버 프로세스를 포트를 달리해, 여러 개 띄우고 있다. 이때, 이런 서버 프로세스 관리를 위한 프로그램을 따로 두는데, 그곳에서 자동으로 서버 프로세스를 띄우고 있다. 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..
물리, 수학적 처리를 하다보면, 점과 선분 사이의 거리를 구해야 할 때가 있다. 직선과 점의 거리와는 다르게 선분과 점 사이의 거리는 조금 더 까다롭다. 아무튼 중고등학생 때의 기억을 되짚어보면서 구현 해 보았다. 1. 원리 이해 선분 SE, 점 P가 있다. 우선 점 P를 SE로 수선의 발을 내렸을 때, 그 안에 포함 되는지, 아니면 밖에 있는지 구분해야 한다. 이것을 구분하기 위해선, 벡터의 내적을 이용해야한다. - 내적 > 0 이면, θ 90 - 내적 = 0 이면, θ = 90 즉 - (벡터 SE와 벡터 SP의 내적) * (벡터 ES, 벡터 EP) >= 0 이면 위 그림 왼쪽과 같이 수선의 발이 선분위에 존재한다. 그 외에는 - SP의 거리, EP의 거리 중 작..
현재 나는 소켓통신으로 서버와 데이터를 주고 받지만, 게임의 버전 정보나, 이벤트 성 데이터를 받아 올 때는, Http통신을 이용하고 있다. 1. 코드 public static string HttpGet(string url) { string responseText = string.Empty; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.Timeout = 30 * 1000; // 30초 request.Headers.Add("Authorization", "BASIC SGVsbG8="); // 헤더 추가 방법 using (HttpWebResponse resp = (HttpWebRes..
게임을 만들다보면 미사일과 캐릭터 같이, 오브젝트간 간 충돌 체크를 하게 된다. 원과 원, 직사각형과 원, 직사각형과 직사각형 등은 비교적 쉽게 확인이 가능하지만, 다각형 충돌체크는 방법이 쉽게 떠오르지 않는다. 여기서 다각형은 볼록한 다각형을 뜻하고, 이때 어떻게 충돌체크를 하는지 알아보자. 1. 원리 두 다각형 충돌 체크를 하는 방법은 의외로 간단하다. (1). 두 다각형의 한 변을 선택하고, (2). 선택한 변의 수직인 벡터로 두 다각형을 정사영 한다. (정사영이란, 도형의 각 점에서 한 평면에 내린 수선의 발이 그리는 도형) (3). 모든 변의 수직인 벡터로 정사영 해보고, 이때 하나라도, 안 겹치는 부분이 있으면 있으면 충돌하지 않는다. 글로 보면 이해하기 어려우니 그림 예제를 보자. 위 왼쪽 ..
미니난투 온라인 - Google Play 앱 [ 게임 소개 ] 미니난투 온라인은 실시간으로 다른 유저들 대결을 할 수 있는 공간입니다. 전략적으로 장비를 선택해, PvP 전투를 준비하세요. 현재 개인전, 팀전이 준비 돼 있습니다.(추후 새로운 모드 업데이트 예정) [ 핵심 컨텐츠 ] - 미니난투 : 6명이서 개인전 난투. - 팀전 : 3:3 전투 - 장비 : 무기, 방어구, 신발, 악세서리 - 아이템 : 포션, 폭탄, 토템 등 [ 전략요소 ] - 장비마다 스킬이 포함 돼 있어, 전략적으로 전투를 할 play.google.com 지난 포스팅에 서버 간 통신을 위한 패킷에 대해 설명했다. 2019/12/17 - [프로그래밍/C# 서버] - c# 실시간 소켓 서버 만들기 1 - 패킷 이번 포스팅에서는 클리이언..