[메신저 프로그램 ] #1. 기초적인 것들

게임 서버 프로그래밍/개발일지

2020. 4. 14. 00:06

여러 책들과 깃헙에 올라온 코드들을 어느정도 봤고, 일정 로직을 따라 만들어보는 연습을 2주정도 한 것같다.

더 이상 보기만 하는 것은 의미가 없을 것 같아서 실제로 코드를 짜보는쪽으로 들어가려 한다.

 

일단 프로그램에 대략적으로 필요할 것 같은 로직들을 액티비티 다이어그램 형식으로 draw.io 프로그램을 이용해서 짰다. 메인 루프는 어떻게 돌 것인지.. 어떤 패킷들을 주고 받아야할 것 같은지.. 등등 앞으로 계속 추가되면서 코딩도 해 나갈 것 같아서 너무 꼼꼼하게는 짜지 않고 대략적으로 이럴 것 같다 한 것들만 작성했다.

 

오늘까지 짠 코드는 Stream, Log, Socket, PacketInfo 들이다. 데이터를 어떻게 만들어 보낼지도 생각하면서 오류가 났을때 로그처리 그리고 하나의 코드에서만 짜왔던 소켓들을 클래스화 시켜서 기능들을 분리했다. 데이터베이스 관련해서도 작성을 해야하는데 일단, 기존에 공부했던 sql-server를 버리고 my-sql로 갈아타려한다. 문법은 어느정도 비슷한 것 같은데 아직 체득이 안되서 거의 프로그램 제작 끝물에 만들 것 같다. (ini 파일에 대충 작업해서 테스트는 해 볼 것이다.)

 

내일부터는 서버의 메인 루프가 도는 로직을 짤 것이다. 깃헙에 올라왔던 nhn 교육용 메신저 서버와 '멀티플레이어 게임 프로그래밍' 책의 로직을 베이스로 하여서 코드를 짤 생각인데 로직은 패킷 수신 - 소켓 처리 - 큐에 추가 - 큐에서 순서대로 실행이 될 것이고, 패킷 헤더의 타입에 따라서 해쉬맵에 패킷id - 함수포인터 형태로 로직을 다 분리시켜 진행할 생각이다. 하나의 클래스에 실행 가능한 모든 함수들을 맵에 삽입시킨후 (매니저 클래스가 담당) 메인 루프에 해당 클래스를 싱글턴으로 호출후 접근해서 실행시킬 예정이다.

 

코로나 덕분에(?) 중간고사가 사라져서 여유가 생겼다. 한달안에 다 만들수 있을 것 같은 느낌이다 ㅎㅎ;

아 물론.. 클라이언트 부분에서 gui는 한 번도 써보지 않은 nana 라이브러리를 쓸 예정이다.. (c++ window,mfc 맘에안듬)

근데 뭐 gui에 큰 시간을 쓰지 않을 예정이라서 기능만 확인하면 금방 친해질 수 있을 것 같다 ㅎㅎ;