반응형

Packet Generator 6

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

패킷 직렬화 지난 시간에는 ClientSession 에서 패킷을 받을 때 패킷 종류에 따라 처리를 달리 하는 방식을 Switch 문으로 처리하였지만, 시간이 지나면서 패킷의 종류가 늘어날수록 비효율적인 구조가 되기에 이를 패킷의 형식에 맞게 처리해주는 구조로 변경해주었다. 🩺 Packet Manager 자동화 이제 지난 시간에 제작한 구조들을 자동화 코드로 변경하고자 한다. 📿 ManagerFormat 추가 자동화를 위해 PacketFormat에 managerFormat을 선언하고, 기존에 작업하던 코드들을 가져온다. 여기서 Register의 부분은 어떠한 패킷이냐에 따라 처리 방식이 다르기에 {0}으로 선언하여 설정한 후, 추후 데이터를 넣는 방식으로 접근한다. 📿 managerRegisterForma..

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

패킷 직렬화 지난 시간에는 Client/Server Session 에서 사용하는 GenPackets의 내용을 수정할 때 마다 매 번 세션에 복사, 붙여넣기 해주던 작업을 ~.bat (=배치파일)을 만들어 실행시켜주는 방법을 통해 자동화를 하였다. 추가적으로 이제 더 무엇을 자동화 하여야할까? 를 생각해보며 오늘 학습을 이어나가 보자. 👚 OnRecvPacket 개선 기존에 사용하던 OnRecvPacket 스크립트는 아래와 같다. 이를 자세히 살펴보면 ClientSession의 OnRecvPacket에서 받은 패킷 ID를 통해 Switch 문에서 검사를 해주어 작업을 진행하였다. 하지만 가면 갈수록 패킷의 종류는 다양해질 수 밖에 없기 때문에 수 많은 Switch 문을 거치는 로직은 비효율적일 수 밖에 없..

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

패킷 직렬화 지난 시간에는 Packet Id가 담긴 Enum을 포함하여 FileFormat을 새롭게 추가하고, 또 byte 처리와 이중 list를 처리하는 로직도 추가하였다. 마지막으로 추가한 로직이 정상적으로 잘 작동하는지 실행해보며 확인하는 시간을 가져 자동화 하는 과정을 조금 더 완성시켰다. 📜 PDL 문서 자동화 지난 시간까지 우리는 PDL 파일을 수동으로 생성해주고, 이를 복사한 뒤 Debug 폴더에 넣어주는 방식으로 작업을 진행하고 있었다. 그러나 이제는 직접 파일 경로를 지정하여 원본을 참조하는 방식으로 구현을 변경할 것이다. 방법은 크게 어렵지 않다. 저장 경로를 나타내는 pdlPath를 생성해주어 이를 활용하여 처리해준다. 이 후, Create 메서드를 실행 할 때 pdlPath를 입력하..

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

패킷 직렬화 지난 시간에는 Packet Generator를 이용하여 패킷 처리 코드를 자동화 하는 작업을 해보았다. 또한 완성된 코드를 기존 코드에 대체해보며 정상적으로 코드가 실행되는지 테스트해보았다. 오늘도 지난 시간에 이어 자동화 코드를 보다 개선해보도록 하자. 💘 FileForamt 코드를 계속해서 수정하는데, 이를 매번 Client Session, Server Session에 복사, 붙여넣기 하는 작업 또한 귀찮아진다. 따라서 해당 과정도 파일의 내용을 참조하여 사용해 자동화 하는 과정을 만들 수 있다. 이를 처리하기 위해서는 PacketFormat 스크립트 내부에 몇 가지 코드를 더 작성해야 하므로 먼저 그 작업을 처리해보자. 🖋️ Using 처리 파일을 통째로 가져와서 사용하기 위해서는 us..

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

패킷 직렬화 지난 시간에는 Packet Generator를 이용하여 패킷 자동화를 어떻게 하면 구성하고, 사용할 수 있는가? 에 대해서 개념 이해를 가지는 시간을 가졌다. Xml 파일에 담긴 데이터를 읽어와 각 타입별로 적합하게 변환하는 작업이 굉장히 유용하여서 추후 다른 프로젝트에서도 필요하다면 사용할 수 있어보인다. 🫵 GenPackets.cs 🧗‍♀️ 파일 생성 using (XmlReader x = XmlReader.Create("PDL.xml", settings)) { x.MoveToContent(); while (x.Read()) { if (x.Depth == 1 && x.NodeType == XmlNodeType.Element) ParsePacket(x); } File.WriteAllText(..

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

패킷 직렬화 지난 시간에는 직렬화, 역직렬화를 마무리 하는 시간을 가졌다. 이를 통해 숫자, 문자, 구조체, 리스트 등 다양한 형태의 자료형들을 어떠한 방법으로 인코딩하여 패킷을 보내주고, 이를 수신하여 읽을 때 어떻게 역직렬화 하여 데이터를 처리하는 지 알아보았다. 즉 Packet 하나를 만들어 Session에 대해서 학습하였다. 오늘 학습은 이러한 패킷들을 자동화하여 처리하는 Packet Generator에 대해서 알아보도록 하자. 📪 Packet Generator 자동화는 지금까지 하드코딩으로 진행하며 작업했던 것들을 자동화하여 처리하는 것을 뜻한다. 여태껏 Session을 만들어 줄 때 자료형을 하나하나 입력해주어서 만들어 주었지만, 이제 Packet Generator를 통해 자동화 처리를 한다...

반응형