Make Unreal REAL.
article thumbnail

JAVA 로 만든 GUI 기반 PvP 온라인 오델로

1학기 때 JAVA 프로그래밍 수업을 들으면서 팀 프로젝트를 했는데 Swing 기반의 GUI 게임을 만들었다.

4명이서 둘씩 나눠 내 쪽은 오델로 게임을 만들었고 다른 쪽은 리듬 게임을 만들었다.

내 쪽은 1학년 때 내가 C++로 만들었던 오델로 코드를 JAVA 로 포팅하여 제작했다.

만들고 나니 꽤 결과물이 잘 나와서 바로 다음 계절학기에 특강으로 수강했던 객체지향 설계 기술 과목에서 게임을 더 업그레이드하여 PvP 온라인 오델로를 제작했다.

수업에서 배운 JAVA 네트워크 프로그래밍과 MVC 패턴을 활용해 멀티 쓰레드 기반의 서버를 만들었고 큐를 활용해 플레이어들을 매칭했으며 서버-클라이언트 간 프로토콜도 직접 정의했다.

밤샘 작업을 하며 너무 힘들었지만, 또 너무 재밌어서 암호화 지원 채팅, 전적 시스템, 예외 처리를 통한 탈주 판별 등 이것저것 기능들을 추가했다.

나는 1학기 때 웹 프로그래밍 수업을 같이 들으며 PHP와 MySQL을 공부했고 라즈베리 파이로 웹 서버를 구축해 본 경험이 있다.

이 경험 덕분에 라즈베리 파이에 JAVA 로 만든 서버를 올리고 공유기 포트 포워딩과 무료 DDNS 서비스를 활용해 직접 호스팅까지 하여 시연 때 교수님과 학우들이 직접 플레이할 수 있게 했다.

교수님께서는 내게 클래스 설계 외주를 할 생각이 없냐고 묻기도 했었다.

 

리눅스와 고가용성 부하 분산 서버

2학기에는 리눅스 서버와 라즈베리 파이에 빠져서 라즈베리 파이 6개를 활용해 고가용성 부하 분산 서버를 구축해보았다.

2개의 로드 밸런서, 2개의 웹 서버, 2개의 DB로 구성된 시스템이었고 책 없이 Server Fault 등의 포럼을 통해 순전히 구글링을 통해서만 공부했다.

각 2개 중 1개가 죽으면 자동으로 살아 있는 녀석에게 서비스를 넘기는 것이 신기했고 FTP, SMB, WebDAV 등의 파일 서버 구축과 Nginx 에 대한 공부도 참 많이 했다.

나는 Apache 보다 Nginx 를 선택했는데 배우기 쉬운 것보다는 성능이 좋은 것이 내겐 더 중요했기 때문이다.

아마도 이때가 가장 힘들었지만 가장 재밌게 공부하고 가장 많이 발전했던 때가 아니었다 싶다.

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그