개인공부) 서버실습(38) - Packet Generator(4)

Justin·2022년 7월 5일
0

서버공부

목록 보기
37/45

✅ 지난 시간

PacketId가 담긴 Enum을 포함하여 FileFormat을 새로 추가해주고, byte와 이중list 상황에서 테스트 해보며 대응코드를 작성해주며 자동화를 더 개선하였다.

PDL 문서 자동화

지난 시간 PDL 생성하여 복사한 뒤에 Debug 폴더에 넣어주는 방식으로 파일의 경로를 찾았었는데 이제는 직접 파일 경로를 지정하여 원본을 참조하는 방식으로 변경할 것이다.

방법은 간단한데, 저장 경로를 pdlPath에 담아 준다.

../
현 폴더에서 한 단계 위에 상위 폴더로 가는 경로이다.

ex) PacketGenerator/bin/Debug -> 현재 Debug에 있기에 PacketGenerator에있는 Pdl 파일을 참조하기 위해 두 번 상위 폴더로 진입하였다.

그 뒤에 Creat할 때의 값을 pdlPath 변수로 넣어어 생성해준다.

args[0]을 넣는 이유
아래에서 PacketGenerator.exe를 시작할 때 Main 함수가 동작하며, 그에 딸린 인자 값으로 pdl을 넣어줄 것인데 그 때 작업이 필요하여 미리 코드를 추가해놓는다.

배치 파일로 자동화

PlayerInforReq class(=GenPackets)에서 내용이 변동 될 때마다 Server, Client에 복사해주는 과정이 굉장히 불편한데

이를 배치 파일로 실행시켜 한 번에 복사하도록 할 것이다.

Packets라는 폴더를 생성하고 그 안에 GenPackets라는 새로운 Class를 생성한다. 이제 그동안 작성했던 Dummy, Server에서의 작업을 다 GenPackets로 옮겨준다.

bat 파일 생성

최상위 폴더인 Server 내에 Common폴더, 그 안에 Packet 폴더를 만들고, 텍스트 파일 생성 후 GenPackets.bat으로 이름을 변경한다.

Visual Studio로 실행하고자 하는 내용을 적어준다.
이 배치파일로 하고자하는 목적은.

  • PacketGenerator를 실행 시켜 최신의 PDL을 참조한 GenPackets.cs 파일 생성
  • Client와 Server에 해당 파일 복사해주기

이 두가지의 작업을 진행할 것이다.

START

파일을 시키는 명령어는 아주 간단하다. START 명령어를 사용하면 간단히 실행 시킬 수 있다.

추가로 여기에 웹주소를 쓰면 이렇게 네이버를 실행시켜주기도한다.

우리는 파일을 실행시킬 것이기에 START 파일 경로를 입력해주면 된다. 이때 파일이 시작되는 경로가 해당 bat파일의 위치이기에 잘 설정해주면 된다.

START ../../PacketGenerator/bin/Debug/PacketGenerator.exe ../../PacketGenerator/PDL.xml

인자 넣기
위에서 설명한대로 인자로 PDL을 넣는다 했던 부분이 여기인데, PacketGenerator.exe를 실행할 때 한 칸 뛰고 경로/파일명을 입력해주면 해당 파일이 인자로 들어가게 된다.

여기까지 설정하고 bat 파일을 실행시키면 GenPackets 파일이 생성된 걸 볼 수 있다.

XCOPY

여기서 두 번째 미션인 복사하여 해당 폴더에 넣는 명령어는 XCOPY이다 우선 /Y 명령어를 사용해서 중복이라면 덮어쓰도록 설정한다.

XCOPY + 중복검사 + 복사할 파일 + 복사할 경로

XCOPY /Y GenPackets.cs "../../DummyClient/Packet"
XCOPY /Y GenPackets.cs "../../Server/Packet"

그 뒤에 복사하고자하는 파일명(GenPackets.cs)을 입력하고, 원하는 위치로 경로를 입력해주면 된다.

이렇게 입력 해준 뒤에 파일을 실행 시키면 GenPackets의 내용이 각각 업데이트 되며 최신 파일로 변경해준다. 이제 파일 수정 후 여기저기 복붙할 필요 없이 이 bat 파일을 한 번 실행시켜주면 끝이다.


하지만 나는 이렇게 아름답게 실행되지 않고 오류가 발생하여 bat 파일을 실행시켜도 제대로 된 경로에 있는 파일을 찾지 못하는 경우가 생겼다.

+07.05 알고보니 경로에 s가 하나 빠져있어 동작하지 않았다... ㅠㅠㅠ 다시 수정하니 이제 잘된다.

profile
인디 게임을 만들며 공부하고 있습니다.

0개의 댓글