Protobuf 설치하기
- 링크에 들어가서 본인 운영체제에 맞는거 다운로드

- 원하는 위치에 압축을 품

-
시스템 환경 변수 Path에다가 압축 푼 경로/bin 을 추가함

-
cmd 켜서 아래 명령어 쳐서 문제없이 나오나 확인
protoc --version
Protobuf 설치 자체는 끝!
Protobuf Go 플러그인 설치하기
- Go 깔려있나 확인
go version
- Protobuf Go 플러그인 설치
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
- 설치 되었나 확인
protoc-gen-go --version
- 만약 제대로 안뜬다면?
- 환경 변수 Path에 아래 경로가 포함되어 있는지 확인할 것
%USERPROFILE%\go\bin- 제대로 뜨면 끝!
Go 디렉토리 설정하기
- 내 Git 레포지토리 상태
GameServerWithGo/ <- Root
├─ Server/ <- 서버용 (Go)
├─ Client/ <- 클라이언트용 (Unity)
├─ Image/ <- ReadMe에 들어가는 사진 저장용
└─ README.md
- GameServerWithGo\Server로 들어가서 cmd 킴
- 아래 커맨드 입력
go mod init game-server-
game-server라는 이름의 모듈을 생성한다는 의미임
-
참고 : go 프로젝트의 구성
- go.mod : 직접 사용하는 라이브러리와 그 버전 정보
- go.sum : 실제 다운로드 한 라이브러리의 해시값 (수정 금지)
첫 Protobuf 구조 짜기
syntax = "proto3"; // 버전 지정
package protocol; // 패키지 이름
option go_package = "game-server/protocol"; // Go에서 패키지 찾을 수 있게 설정
message CS_Ping // 패킷 구조체 (이름 : CS_Ping)
{
int64 time = 1;
}
// Go에서는 struct, C#에서는 Class로 생성됨
// [타입] [이름] = [필드 번호]
// 필드 번호 절대 바꾸지 말고 중복 안됨.
message SC_Ping
{
int64 time = 1;
}
// 메시지 안에 메시지를 넣을 수 있음
message Vector2
{
float x = 1;
float y = 2;
}
// 이렇게
message CS_Move
{
Vector2 direction = 1;
}Protobuf 자료형 참고 자료
Protobuf 자료형 참고 자료 2
.Proto 파일 컴파일 하기
- Server 폴더로 가서 아래의 명령 실행
protoc --go_out=. --go_opt=paths=source_relative protocol/game.proto-
설명
- protoc : proto 파일 컴파일러 실행
- —go_out=. : protoc 실행 위치(.) 를 기준으로 go 코드 생성 결과를 둠
- —go_opt=paths=source_relative : proto 파일이 있는 경로 그대로에 go 코드를 생성함
- protocol/game.proto : protocol 폴더 안에 있는 game.proto 파일을 go 코드로 컴파일 할 것
-
그래서 현재 폴더 구조
GameServerWithGo/ <- Root
├─ Server/ <- 서버용 (Go)
| ├─ protocol/
| | ├─ game.proto <- Protobuf 파일
| | ├─ game.pb.go <- Protobuf 파일을 컴파일 해서 생긴 go 파일 (수동 수정 X)
| ├─ server/
├─ Client/ <- 클라이언트용 (Unity)
├─ Image/ <- ReadMe에 들어가는 사진 저장용
└─ README.md
다음에 할 것
- 실제 생성한 game.pb.go 파일을 토대로 간단하게 ping 보내보기
- go 문법 간략 정리