[Survival Horizon] 레벨업 및 보상
·
[Survival Horizion]
개요게임을 마치거나 퀘스트를 완료할 시 경험치를 흭득하여 레벨업을 하게 됩니다레벨업을 하였다면 레벨의 보상을 흭득할 수 있는 콘텐츠 입니다결과물레벨 보상 받기레벨업 및 보상 등록현재 경험치에 전투나 보상을 통해 얻은 경험치를 더하여 레벨업을 진행합니다레벨이 1이상 오를 수 있기 때문에 반복문을 통해 현재 레벨까지의 보상을 얻을 수 있게 합니다레벨업 보상 받기플레이어가 어떤 레벨의 보상을 받는지 확인하고 정말로 있는지 확인 합니다 정상적인 상황이라면 받았다고 체크하고 받은 날짜를 저장합니다 마스터데이터베이스에서 보상 아이디를 통해 보상의 정보를 얻어오고 보상을 더해줍니다
[Survival Horizon] 인벤토리
·
[Survival Horizion]
개요타르코프 형식의 그리드 인벤토리 시스템 입니다아이템을 이동, 삭제, 합치기, 나누기등 가능합니다결과물가방에 저장하는 방식타르코프 시스템은 가방에 아이템을 넣는 방식으로 되어 있습니다가방에는 가로, 높이, 무게로 구성되어 있으며 가방안에 어떻게 하면 아이템을 넣을 수 있는지 고민하였습니다 데이터베이스 테이블은 다음과 같습니다 우선 저장소입니다저장소는 가방과 캐비넷이 있으며 인 게임에서는 가방만 사용합니다이들은 storage_id로 키 값을 가지고 있습니다 저장소 안에 있는 아이템들은 저장소 아이디를 통해 위치와 회전값을 가짐으로써어떤 가방에 들어 있는지 알 수 있고 조회도 가능합니다 아이템의 공통적인 부분이나 특성들은 해당 테이블에서 확인 할 수 있습니다간단한 인벤토리 체크클라이언트에서 들어오는 정보는..
[Survival Horizon] 티켓
·
[Survival Horizion]
개요티켓은 게임을 시작하기 위해서 필요한 자원입니다 티켓이 최대 수치보다 작다면 적절한 시간(10분)이 흐르면 티켓의 현재 개수를 증가 시켜줍니다매칭에 성공하였다면 티켓이 1개가 사용되어 집니다결과물 티켓 갱신 + 시간 유지 티켓 소모티켓 갱신 요청유니티에서 유저의 정보를 받은 이후 만약에 티켓이 최대치에 비해 부족하다면남은 시간 만큰 폴링을 시작합니다 1초마다 반복하며 시간이 바뀌는 것을 보여줍니다  남은 시간이 모두 되어 반복을 종료하였다면 웹 서버에 티켓을 갱신 해달라는 요청을 보내게 됩니다 응답을 받았을 때  시간이 아직 남아 있다면 해당 시간만큼 다시 반복해 줍니다 문제가 없다면 최신화 시켜주고만약에 최대 개수가 아직 안채워졌다면 반복합니다.티켓 갱신티켓은 User테이블에 다음과 같이 사용되어집..
[Survival Horizon] 일일 미션
·
[Survival Horizion]
개요하루마다 변경되는 일일 미션 시스템 입니다 일일 미션은 3개의 종류(전투, 보급, 플레이)가 있고 각각 랜덤으로 하나씩 갱신되어 집니다인 게임에서 미션을 수행할 수 있고 진행률을 확인할 수 있습니다 미션의 진행도를 모두 채웠다면 보상을 받을 수 있습니다.결과물일일 미션 갱신일일 미션 진행도일일 미션 임무 보상일일 미션다음과 같이 일일 미션에는 크게 전부, 보급, 플레이가 있습니다 기획자의 요구사항에 따라 갱신, 진행, 보상을 받는 시스템을 설계하였습니다.최종적으로 갱신과 보상은 웹 서버에서 처리하였고 진행은 소켓 서버에서 처리하였습니다. 일일 미션 불러오기등록된 퀘스트라는 테이블을 불러와 그 중 Day 타입의 퀘스트를 골라서 클라이언트에게 전송하였습니다.추후에 NPC관련 퀘스트도 있을 것이라고 하여 ..
[Survival Horizion] 데이터베이스 스크립트 관리
·
[Survival Horizion]
개요마스터베이스의 내용을 변경하고 이를 공통 라이브러리에서 구조체를 변경하며 관리하였습니다.이는 일일히 찾아가며 고쳐야 하는 귀찮음과 실수할 가능성이 매우 높은 일이였습니다 그래서 마스터 데이터베이스가 변경점이 생긴다면 수작업하여 변경하는 위험하다고 생각하였습니다그래서 자동화를 함으로써 실수도 줄이고 일관성을 높일 필요가 있다고 판단하여 제작하게 되었습니다 또한 웹 서버, 소켓 서버의 마스터데이터 베이스를 호출하는 스크립트도 자동화 하는 것으로 목표를 새웠습니다.결과물 MySQL에서 작성할 때 규칙을 세워 작성합니다 해당 스키마를 추출하여 타입이나 NULL인지 DEFAULT, COMMENT에 어떤 값이 있는지 확인하며 C#스타일로 변경하고이를 JSON형식으로 추출합니다 JSON을 바탕으로 구조체를 생성합..
[Survival Horizion] 게임 서버 매니저
·
[Survival Horizion]
개요게임 서버(소켓 서버 == 인 게임)을 관리하고 해당 컨테이너의 생성 및 삭제를 관리하는 역할 입니다또한 매치메이킹 서버에서 방이 있는지 확인해주고 방에 대한 정보를 넘겨주며 상태를 관리하는 역할도 포함합니다결과물초반 테스트 결과인 게임과 합친 결과 + 멀티 연결 게임 서버 매니저 사이클게임 서버 매니저가 초기화 되면서 컨테이너를 생성게임 서버(소켓 서버)에서 맵, DB등 초기화 요소가 끝나면 준비 완료 요청을 보냄매치메이킹 서버에서 원하는 방이 있는지 물어봄적절한 방이 있다면 해당 방에 대한 정보를 넘겨줌해당 방은 할당 상태로 상태를 업데이트 함게임 서버는 클라이언트를 받을 준비를 함클라이언트가 게임 서버에 입장 패킷과 키를 전달하여 입장함게임이 종료됨게임 서버는 게임 서버 매니저에게 Shutdow..
[Survival Horizion] 레이팅 시스템
·
[Survival Horizion]
개요레이팅 시스템을 통해 플레이어들의 실력을 계산하여 동등한 상대와 플레이 할 수 있게 도와줍니다 개발하고 있는 게임을 소수의 개인 플레이어들이 참여하여 경쟁을 하는 게임입니다그렇기에 일반적인 레이팅에서 추가적인 인 게임 점수를 반영해야겠다고 생각하였습니다 또한 해당 레이팅을 이용하여 매치메이킹 서버와 사용할 수 있도록 하였습니다알고리즘알고리즘 종류Elo : 플레이어들의 능력 수준은 정규 분포간단하고 객관적인 점수 시스템이며 신뢰성이 높음시간이 지나면 점수의 인플레이션이 발생점수가 너무 점진적으로 증가팀 경기에서 적용된다면 활약에대한 점수 미반영점수가 계속유지    Glicko : Elo 시스템의 발전된 평가(Rating) 시스템점수는 플레이들의  r과 RD값에 의존하여 변동다양한 성능 지표를 수용 가능..
[Survival Horizion] 매치메이커 서버
·
[Survival Horizion]
개요레이팅 시스템을 통해 동등한 유저들과 게임을 할 수 있도록 하는 매치메이커 서버 입니다 클라이언트가 매칭을 시작하면 매칭 큐에 들어가게 됩니다매치메이커 서버는 백 그라운드 서비스에서 매칭을 원하는 인원들을 모아 매칭을 잡아주게 됩니다결과물멀티플레이 테스트티켓티켓은 redis에 저장되는 정보 입니다락 매칭 신청클라이언트에서 매칭 신청을 요청하여 매칭 대기열에 넣습니다 맵에 대한 정보나 매칭을 시작한 시간에 대한 정보를 저장합니다저장된 정보는 매칭 백그라운드 서비스에서 이용하게 됩니다  매칭 취소다른 게임들을 보았을 때 한번 쯤 게임 취소를 눌러도 매칭이 잡히는 경우를 보았습니다그래서 매칭을 강제로 취소시키는 것이 아닌 부탁 하는 입장으로 만들었습니다 매칭 취소 요청을 한다면 Queue에서 바로 제거되는..
[Survival Horizion] GPGS를 사용하여 로컬 호스트로 웹 서버(ASP.NET)와 통신하는 방법
·
[Survival Horizion]
이렇게 까지 하는 분은 아마 없겠지만 도움이 되었으면 좋겠습니다.목표로컬에서 테스트할 수 있는 방법구글 플레이 게임 서비스를 활용다른 웹서버도 로컬에서 테스트 가능불필요한 작업 최대한 제거문제구글 플레이 게임 서비스는 안드로이드 또는 에뮬로 돌려야지 동작 (해결 : GPGS ADB, NOX, 본인 핸드폰)에뮬은 자신의 IP를 따로 가지고 있어서 로컬이 불가능 (해결 : 호스트 루프백)현재 상황 유니티에서 서버로 코드를 보내고 서버가 구글에게 코드를 보내 토큰을 얻어야 하는 상황 문제는 클라이언트에서 서버에게 코드를 보내기 위해서는 서버에서 포트포워딩을 해야함하지만 다른 클라이언트, 기획에서 사용하려면 계속 같은 동작을 수행해야함 (귀찮고 지금 개발중이라 수정이 너무 많음)서버가 고정으로 계속 켜져있는 것..
[Survival Horizion] 인증서버 (구글 플레이)
·
[Survival Horizion]
목표구글 플레이 게임 서비스로 로그인토큰을 통해 유저 인증갱신 토큰을 통해 적절하게 엑세스 토큰(유효시간 1시간)을 갱신테스트 및 실험구글 기준 1시간 유효시간이 끝난다면 어떻게 될까?error : invalid_token 값을 보낸다갱신토큰을 강제로 매번 생성 할경우 갱신토큰은 무제한으로 늘어날까?구글에서는 50개의 제한이 있고 가장 오래된것을 삭제한다갱신토큰의 유효기간은 언제일까?갱신토큰을 사용하지 않은 기준 6개월 이라고 되어있다토큰 정보가 유효하다면"issued_to": "567507328158-b88q6v7b81ak5kh12k7959ah6emmkk70.apps.googleusercontent.com", "audience": "567507328158-b88q6v7b81ak5kh12k7959ah6..
[Survival Horizion] 프로젝트 소개
·
[Survival Horizion]
개요모바일 플랫폼 타르코프 라이크 2D 루팅 슈터 게임개발개발 기간 : 2024.07 ~ ( 진행중 ) 개발 인원 : 기획 (1명), 서버 (2명), 클라이언트 (2명) 개발 목표 : 모바일 플랫폼 타르코프 라이크 2D FPS 기술 스택 : C#, .NET, Unity, Docker, Redis, MySQL영상시스템구글 플레이 인증매치메이커게임 서버 매니저데이터베이스 스크립트 관리콘텐츠레벨업 보상일일 퀘스트티켓인벤토리