Skip to content

ServerDevelopLaborUnion/2022-ShootingDownLaborUnion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2022 서버 개발 노동 조합 산출물 프로젝트

멀티플레이 가능한 Top-Down 슈팅 게임이다

게임 조작법 등은 추후 추가 예정

이하는 개발에 사용된 기술들에 대한 설명입니다

Typescript WebSocket Server

Typescript Websocket 서버에 관한 설명

사용 기술 및 라이브러리

Google Protobuffer - npm install google-protobuf@3.20.1-rc.1

기존의 json 기반의 통신은 문자열 기반이기 때문에 낭비되는 자원이 많다고 생각하여 그 대신 모든 데이터를 Binary 데이터로 직렬화 하기 위해 사용하였다.

하나의 스키마를 이용하여 여러가지 언어에서 사용할 수 있는 코드를 자동생성하여 쓸 수 있기 때문에 node 기반 서버와 C# 기반 클라이언트 모두가 사용하기 쉬웠다.

WebSocket - npm install websocket@1.0.34

byte로 되어있는 Google Protobuffer 의 데이터를 송수신하기 위하여 기존에 사용하던 ws 라이브러리 대신 고급 기능들을 사용할 수 있는 websocket 라이브러리를 이용하여 제작하였다.

http 라이브러리를 이용하여 서버를 만들고 listen(port) 를 해준 후 websocket 으로 연결을 업그래이드하는 방식을 사용하는 라이브러리이다.

Json Web Token - npm install jsonwebtoken@8.5.1

줄여서 jwt 라고도 불리는 전자 서명이다. 서버에서 채용한 암호화 알고리즘은 SHA-256 이다.

사용자의 로그인 정보를 저장하고 다음 로그인을 시도할 때 자동로그인이 가능하도록 만들기 위해 사용자 정보 인증 용도로 사용하였다.

UUID - npm install uuid@8.3.2

universally unique identifier 의 약자로 범용 고유 식별자를 말한다.

유저의 고유 ID시즌 ID 에 중복되지 않는 고유적인 ID 를 만들 필요성이 있어 사용하게 되었다.

MongoDB or MariaDB - 아직 미구현

사용자의 데이터를 저장하는 용도로 사용한 데이터베이스이다.

로그인 시 데이터를 메모리에 불러오고 연결이 끊기거나 로그아웃 될 때 데이터를 저장하게 하는 방식으로 데이터를 관리하였다.

Unity WebSocket Client

C# WebSocket Client 에 관한 설명

사용 기술 및 라이브러리

Google Protobuffer - Install-Package Google.Protobuf -Version 3.20.1

상술했듯이 Javascript 와 호환되는 데이터 직렬화를 위해 사용된 라이브러리.

System.Net.WebSocket - System.Net.WebSockets.dll (기본 내장 라이브러리)

위의 websocket 라이브러리와 같은 이유로 Binary 데이터를 송수신하기 위해 다른 라이브러리가 아닌 기본 제공 라이브러리를 이용하여 고급 기능을 사용하였다.

UnityEngine.RuntimeInitializeOnLoadMethodAttribute - 유니티 기본

이 속성을 사용하면 어떤 씬에서든지 게임이 시작될 시 함수가 실행되기 때문에 Message Queue 를 비우며 계속 실행을 해주어야 하기 때문에 게임 시작 시 DontDestroyOnLoad 로 만들어 게임 시작과 동시에 계속 작동되도록 하였다.

Unity Game

Unity Game 에 관한 설명

사용 기술 및 라이브러리

Singleton - 디자인 패턴

UnityHFSM - UnityPakage로 추가

About

멀티플레이 가능한 슈팅 게임

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published