나만의 커스텀을 통해 여러 사람들과 함께 게임을 즐겨보자 !
- 게임 요소를 직접 제작하고 수정할 수 있도록 지원합니다. 관리자 심사 기능을 통해 유저에게 안전한 콘텐츠를 제공합니다.
- 캐치마인드/부루마불 게임을 제공합니다. 플레이어 신고 기능을 통해 부적절한 유저를 제재할 수 있습니다. 화상 채팅 및 레벨·점수 제도를 도입해, 게임에 더욱 몰입할 수 있는 환경을 조성합니다.
- 화상 채팅 중 부적절한 언행을 AI가 즉시 감지하여 제재를 적용합니다.
| 분야 | 기술 스택 | 구현 기능 |
|---|---|---|
| Frontend | • React | • 컴포넌트 기반 UI 개발 • SPA(Single Page Application) 구현 |
| • Redux | • 전역 상태 관리 • 사용자 정보, 게임 상태 관리 |
|
| • Tailwind | • UI 스타일링 • 반응형 디자인 구현 |
|
| • Styled-component | • 컴포넌트별 스타일 관리 • 동적 스타일링 |
|
| • Three.js | • 3D 게임 그래픽 구현 • 3D 모델링 렌더링 |
|
| • Canvas API | • 2D 그림 그리기기 구현 • 실시간 그림 화면 공유 |
|
| • Socket.io | • 실시간 게임 통신 • 채팅 기능 구현 |
|
| • WebRTC | • 실시간 음성/영상 통신 • P2P 연결 구현 |
|
| Backend | • SpringBoot | • RESTful API 서버 구축 • 비즈니스 로직 처리 |
| • MySQL | • 사용자 데이터 관리 • 게임 데이터 저장 |
|
| • Redis | • 실시간 데이터 캐싱 • 세션 관리 |
|
| • OpenVidu | • 화상 채팅 서버 구축 • 미디어 서버 관리 |
|
| • JPA | • 객체-관계 매핑 • 데이터베이스 연동 |
|
| • Spring Security | • 사용자 인증/인가 • 보안 기능 구현 |
|
| Infra | • Docker | • 컨테이너화 배포 • 개발/운영 환경 일치화 |
| • Jenkins | • CI/CD 파이프라인 구축 • 자동화된 빌드/배포 |
|
| • Nginx | • 웹 서버 구축 • 로드 밸런싱 |
|
| AI | • Whisper | • 음성 인식 기능 • 음성-텍스트 변환 |
| • Electron | • 데스크톱 애플리케이션 배포 • 크로스 플랫폼 지원 |
- 이메일 유효성 검사 : 정규 표현식에 맞는 형식만 가능
- 비밀번호 유효성 검사 : 영문, 숫자, 특수문자 각 1개 이상 조합하여 9-16자
- 이름 유효성 검사 : 한글만 조합해 2-5자
- 닉네임 유효성 검사 : 한글, 영문, 숫자만 조합해 2-10자
- 이메일과 비밀번호로 로그인
이번 프로젝트에서 개인적인 목표는 WebSocket, Redis를 사용한 게임 구현, Electron, Whisper, NSIS, LLM을 활용한 욕설 자동 탐지 프로그램 구현하는 거 였습니다. 처음에는 개발 일정을 맞추기 위해 무작정 개발을 진행하다보니 구현이 막히는 부분이 있었고, 이로인해 일정에 차질이 생길 위기에 처했습니다. 이러한 상황의 문제점을 지식의 부족이라고 생각해 개발을 지속하는게 아닌 실제 구현시 필요한 기술들의 구조를 학습하는데 시간을 들였고 결과적으론 성공적이게 구현할 수 있었습니다. 생소했던 기술을 익히는 과정에서 무작정 개념만 익히는게 아닌, 사이드 프로젝트를 만들어 보며 동작 구조를 익히는게 더 좋다는 점을 배울 수 있었던 소중한 경헙이었습니다.
이번 프로젝트에서는 일정 관리가 미숙해 계획보다 작업이 지연되고, 잦은 버그로 수정 업무가 반복되는 어려움을 겪었다. 웹소켓처럼 처음 다루는 기술을 충분히 학습하지 못해 구현에만 급급하다 보니 한동안 코드가 막혀 힘들기도 했다. 하지만 프론트엔드와 활발히 소통하며 도메인을 깊이 이해하려 노력했고, 작은 테스트 프로젝트를 통해 새로운 기술을 익히는 방식을 배울 수 있었다. Jira를 활용한 일정 관리는 업무 우선순위와 진행 상황을 명확하게 파악하게 해주었고, 알고리즘·테스트 코드 작성으로 로직을 다각도로 검증하는 습관도 들였다. 여러 명이 함께 일하다 보니 책임감을 가지게 되었고, 실제 배포 환경과 비슷한 환경에서 테스트함으로써 끈기도 기를 수 있었다. 무엇보다 부족한 점이 많았음에도 끝까지 응원해준 팀원들에게 감사하며, 앞으로는 더욱 성장해 좋은 동료가 되고 싶다.
##느낀점 아쉬운점
- 맡은 게임을 끝까지 완수하지 못하고 팀 프로젝트를 위해 포기했던점
- WebSocket 과 WebRTC에 관해 자세한 학습을 하지 않고 개발을 시작했던점
- 컴포넌트에 대한 이해를 완벽히 숙지하지 않은 상태에서 개발을 시작했던점
- 타입스크립트를 안하고 자바스크립트로 리액트를 진행한점
##배운점
- 개발을 급히 시작하기보다 완벽한 설계과 학습이 필요하단걸 느낌
- 개인의 욕심도 중요하지만 팀을 위한 선택과 집중도 필요하다는 것을 느낌
- 일정관리가 중요하다는 것을 크게 느낌
- 기록하는 습관과 머리가 안돌아갈땐 적는 습관의 중요성을 느낌
이번 프로젝트는 제 첫 6주간의 다소 장기간의 프로젝트였습니다. 시간이 많다고 생각했고, 새로운 기술과 처음 해보는 게임이라는 주제를 다룸에도 불구하고 제 자신이 수월하게 해낼 수 있다고 믿었습니다. 그러나 실제로는 6주라는 기간 안에 개발 기간은 제가 새로운 기술인 WebSocket과 WebRTC 기술을 적용해서 완벽하게 작동되는 게임을 만들기에는 시간도, 제 역량도 턱없이 부족했습니다. 이로 인해 일정 관리에 차질이 생기고 예상한 개발 완수 기간보다 실제 개발 완수 기간이 많이 늦춰졌습니다. 할 수 있을까란 막막함에 많이 힘들었지만, 팀원들의 격려와 도움으로 개발을 마무리할 수 있었습니다.
완성된 프로젝트를 보며 1. 컴포넌트의 구조를 더 적절하게 구성할 수 있지 않았을까, 2. 리덕스를 활용하여 상태 관리를 더욱 철저하게 했어야 했다, 3. 일정관리를 더욱 잘 해야 했다, 4. 일의 우선순위를 매겨서 잘 지켜야겠다 등등 여러 가지를 배웠고, 다음 프로젝트에선 이번 경험을 바탕으로 더욱 수월하게 진행할 수 있겠다는 생각을 했습니다. Meeple 팀원들과 함께 고생하며 완성해 낸 GamePlanet이 좋은 결과를 얻게 되어서 정말 기쁘고, 동료들과 함께 개발 프로젝트를 진행할 수 있어서 정말 값진 경험이었습니다.












