공부/인프런 - Rookiss

Part 4-4-9. 패킷 직렬화 : Packet Generator #4

셩잇님 2023. 12. 20. 17:24
반응형

 

 

패킷 직렬화

 

 지난 시간에는 Packet Id가 담긴 Enum을 포함하여 FileFormat을 새롭게 추가하고, 또 byte 처리와 이중 list를 처리하는 로직도 추가하였다. 마지막으로 추가한 로직이 정상적으로 잘 작동하는지 실행해보며 확인하는 시간을 가져 자동화 하는 과정을 조금 더 완성시켰다.

 


 

📜 PDL 문서 자동화

 

 지난 시간까지 우리는 PDL 파일을 수동으로 생성해주고, 이를 복사한 뒤 Debug 폴더에 넣어주는 방식으로 작업을 진행하고 있었다. 그러나 이제는 직접 파일 경로를 지정하여 원본을 참조하는 방식으로 구현을 변경할 것이다.

 

 

 방법은 크게 어렵지 않다. 저장 경로를 나타내는 pdlPath를 생성해주어 이를 활용하여 처리해준다. 이 후, Create 메서드를 실행 할 때 pdlPath를 입력하여 파일이 생성되도록 한다.

 

../
현 폴더에서 한 단계 상위 폴더로 가는 방법이다. 예를 들어 PacketGenerator/bin/Debug에서 ../를 한다고 가정한다면, PacketGenerator/bin 폴더로 이동하는 것이다.

 

args[0]을 넣는 이유
아래에서 PacketGenerator 파일을 exe로 만들어 수동으로 실행할 것 인데, 이 프로그램이 시작되면 Main 함수가 동작한다. 그 때에 인자 값으로 Pdl을 넣어서 작업해 줄 것인데 Pdl을 넣어서 처리할 때의 작업이 필요하여 미리 작성한다. 😂

 


 

🎰 배치 파일을 통한 자동화

 

 이전까지는 PlayerInfoReq 클래스에서 내용이 변경될 때 마다 Server와 Client Session 스크립트에 접근해서 해당 내용을 복사, 붙여넣기 해주었다. 따라서 이는 매우 불편했는데 이를 배치 파일을 통해 자동화하여 한번에 처리하도록 할 것이다.

 

 

 DummyClient 프로젝트와 Server 프로젝트 내부에 새롭게 Packets 이라는 폴더를 생성해주고, 동일한 이름을 가진 GenPackets 스크립트를 새롭게 생성한다. 이제껏 작성했던 Dummy, Server에서의 내용들인 PlayerInfoReq를 GenPacket 스크립트로 옮겨준다.

 

🪁 Bat 파일 생성

 

 최상위 폴더인 Server 내에 Commom 폴더를 새롭게 생성해준다. 해당 폴더 내부에 또 다시 Packet 폴더를 만들어 주고, 텍스트 파일 형식으로 일단 파일을 생성한 뒤, 이후 GenPacket.bat (=배치파일)로 이름과 확장자를 변경한다.

 

 

 bat 파일을 비주얼 스튜디오로 실행하여 배치 파일을 실행할 때 동작하는 로직을 추가해준다. 우리가 해당 배치 파일을 실행할 때 필요한 것은 다음과 같다.

 

1. PacketGenerator를 실행시켜 최신 버전의 PDL을 참조한 GenPacket.cs 파일 생성

2. Client, Server Session에 해당 파일을 복사

 

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

 

🪅 START

 

 파일을 실행시키는 명령어는 아주 간단하다. 유니티에서도 사용하는 Start 명령어이다. 해당 명령어를 입력하면 파일을 실행할 수 있다. 따라서 우리는 파일을 실행시킬 것이기에, Start에 파일 경로 및 파일명을 입력해주면 된다. 따라서 아래와 같이 작성하고 배치 파일을 실행한다면 GenPackets 파일이 정상적으로 생성되는 것을 볼 수 있다.

 

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

 

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

 

🪅 XCOPY

 

두 번째로 사용이 필요한 것은 복사하여 해당 폴더에 넣어주는 명령어이다. XCOPY를 사용 후, /Y 옵션을 사용해 파일이 중복된다면 덮어씌우도록 설정한다. 즉. XCOPY + 중복 검사 + 복사할 파일 + 복사할 경로를 입력해주면 된다.

 

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

 

 따라서 위와 같이 복사하고자 하는 파일명을 입력하고, 원하는 위치로 경로를 설정해주면 된다. 이 후 실행시키면 GenPackets의 내용이 업데이트 되어 최신 파일로 변경된다. 이제 내용이 수정되더라도 Server, Client 세션에 복사, 붙여넣기 할 필요 없이 해당 배치 파일을 한번 실행시켜주면 끝이다.

 


 

실행 결과 😎

 

 윈도우 11 환경에서 실행을 진행하니 정상적으로 실행되지 않았다. 아무래도 이것저것 변경된 것 같은데 여기까지 찾아보는 건 무리인 것 같다.

 

 

반응형