Skip to content

KIM9909/GamePlanet

Repository files navigation

GAME PLANET

나만의 커스텀을 통해 여러 사람들과 함께 게임을 즐겨보자 !

📋 목차

  1. 프로젝트 소개
  2. 기술 스택
  3. 시작 가이드
  4. 아키텍처
  5. 주요 기능
  6. 프로젝트 진행 과정
  7. 팀원 소개
  8. 느낀 점

프로젝트 소개

💡 기획 배경

  • 보드게임이나 게임 특성상 최소 2인부터 많게는 6인까지 하게 되는데, 사람을 모으기 힘들다는 어려움과 실제로 만나서 플레이할 장소를 구해야 한다는 시간적 공간적 제약이 있었습니다.

  • 또한, 게임을 하려면 직접 구매하거나 보드게임 카페에 가서 돈을 내고 해야 한다는 아쉬움이 있었습니다.

  • 또한 컨텐츠의 소모성이 심해서 한 두번하면 질리는 경우가 잦았습니다.

  • 저희는 이러한 불편한 점과 문제점들을 해결하고자 웹 게임 서비스를 기획하게 되었습니다.

🎯 서비스 목표

  • 커뮤니티 기능을 통해서 해당 게임에 대한 정보를 얻고, 리뷰를 통해서 게임에 대한 사람들의 개인적인 의견들을 볼 수 있어서 게임에 대한 꿀팁을 얻거나 취향에 맞는 게임을 선택하는데 도움을 줄 수 있습니다.

  • 게임의 커스텀 기능을 통해서 사용자가 원하는 게임의 테마나 디자인을 할 수 있어서 하나의 게임을 하더라도 질리지 않고 사람들과 꾸준히 즐길 수 있도록 합니다.

  • 실제로 존재하는 게임들과 최대한 유사하게 제작하여 기존 게임을 이용하던 사용자들이 룰을 익히는데 시간이 들지 않도록 하여 접근성을 최대화 했고, 때문에 보다 몰입도 높은 게임을 즐길 수 있습니다.

  • 청정한 게임 환경을 위해서 AI 욕설 감지 프로그램을 동작하여 사용자들의 폭언과 욕설을 스스로 잡아내어 관리자에게 보내줍니다.

⏰ 개발 기간

2025.01.06 ~ 2025.02.21 (6주)

📌 주요 기능

  • 게임 커스텀

    게임 요소를 직접 제작하고 수정할 수 있도록 지원합니다. 관리자 심사 기능을 통해 유저에게 안전한 콘텐츠를 제공합니다.
  • 게임 플레이

    캐치마인드/부루마불 게임을 제공합니다. 플레이어 신고 기능을 통해 부적절한 유저를 제재할 수 있습니다. 화상 채팅 및 레벨·점수 제도를 도입해, 게임에 더욱 몰입할 수 있는 환경을 조성합니다.
  • AI 욕설 탐지

    화상 채팅 중 부적절한 언행을 AI가 즉시 감지하여 제재를 적용합니다.

🛠️ SKILLS

분야 기술 스택 구현 기능
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 • 데스크톱 애플리케이션 배포
• 크로스 플랫폼 지원

📜 설계 문서

  • 시스템 아키텍처

    alt text

  • DB 설계 (ERD)

    alt text

  • API 설계

    API 명세서 링크

  • WBS

    alt text

  • 요구사항 명세서

    alt text

✅ 주요 기능

00. 접속 화면

alt text

01. 회원가입, 로그인

alt text alt text

회원가입

  • 이메일 유효성 검사 : 정규 표현식에 맞는 형식만 가능
  • 비밀번호 유효성 검사 : 영문, 숫자, 특수문자 각 1개 이상 조합하여 9-16자
  • 이름 유효성 검사 : 한글만 조합해 2-5자
  • 닉네임 유효성 검사 : 한글, 영문, 숫자만 조합해 2-10자

로그인

  • 이메일비밀번호로 로그인

02. AI 욕설 감지 Meeple 앱

alt text

  • 프로그램을 설치하지 않으면 게임방 생성 및 입장이 불가

  • Meeple 로그인 후 입장 가능

03. 캐치마인드

alt text

  • 그림을 그리면 상대방에서도 실시간으로 그림화면이 공유

  • 일반 채팅과 정답채팅을 구별해서 인식

  • 정답 채팅 입력 시 점수 획득

  • 그리기 도구에서 붓의 굵기와 색 변경 가능

04. 게임 커스텀

alt text

  • 부루마불에서 이용할 보드판 커스텀 가능

  • 보드판 커스텀 후 관리자에게 승인 요청을 전송

  • 관리자가 승인을 하면 부루마불 게임 전 커스텀 보드판 사용 가능

05. 부루마불

alt text

  • 커스텀된 보드판을 대기방에서 선택 가능

  • 게임 입장하면 커스텀된 사진과 마불(재화)이 적용

  • 기존 부루마불과 같은 룰 적용

06. 관리자

alt text

  • 회원 목록 조회 가능, 회원 프로필 수정

  • 회원 탈퇴 가능, 커스텀 게임 심사

  • 유저 신고 목록 조회, 신고 처리

  • AI 욕설 감지 조회 및 처리

👨‍👩‍👧‍👦 멤버 소개

alt text

느낀 점

윤재은

이번 프로젝트에서 개인적인 목표는 WebSocket, Redis를 사용한 게임 구현, Electron, Whisper, NSIS, LLM을 활용한 욕설 자동 탐지 프로그램 구현하는 거 였습니다. 처음에는 개발 일정을 맞추기 위해 무작정 개발을 진행하다보니 구현이 막히는 부분이 있었고, 이로인해 일정에 차질이 생길 위기에 처했습니다. 이러한 상황의 문제점을 지식의 부족이라고 생각해 개발을 지속하는게 아닌 실제 구현시 필요한 기술들의 구조를 학습하는데 시간을 들였고 결과적으론 성공적이게 구현할 수 있었습니다. 생소했던 기술을 익히는 과정에서 무작정 개념만 익히는게 아닌, 사이드 프로젝트를 만들어 보며 동작 구조를 익히는게 더 좋다는 점을 배울 수 있었던 소중한 경헙이었습니다.

김성현

이번 프로젝트에서는 일정 관리가 미숙해 계획보다 작업이 지연되고, 잦은 버그로 수정 업무가 반복되는 어려움을 겪었다. 웹소켓처럼 처음 다루는 기술을 충분히 학습하지 못해 구현에만 급급하다 보니 한동안 코드가 막혀 힘들기도 했다. 하지만 프론트엔드와 활발히 소통하며 도메인을 깊이 이해하려 노력했고, 작은 테스트 프로젝트를 통해 새로운 기술을 익히는 방식을 배울 수 있었다. Jira를 활용한 일정 관리는 업무 우선순위와 진행 상황을 명확하게 파악하게 해주었고, 알고리즘·테스트 코드 작성으로 로직을 다각도로 검증하는 습관도 들였다. 여러 명이 함께 일하다 보니 책임감을 가지게 되었고, 실제 배포 환경과 비슷한 환경에서 테스트함으로써 끈기도 기를 수 있었다. 무엇보다 부족한 점이 많았음에도 끝까지 응원해준 팀원들에게 감사하며, 앞으로는 더욱 성장해 좋은 동료가 되고 싶다.

윤희준

##느낀점 아쉬운점

  • 맡은 게임을 끝까지 완수하지 못하고 팀 프로젝트를 위해 포기했던점
  • WebSocket 과 WebRTC에 관해 자세한 학습을 하지 않고 개발을 시작했던점
  • 컴포넌트에 대한 이해를 완벽히 숙지하지 않은 상태에서 개발을 시작했던점
  • 타입스크립트를 안하고 자바스크립트로 리액트를 진행한점

##배운점

  • 개발을 급히 시작하기보다 완벽한 설계과 학습이 필요하단걸 느낌
  • 개인의 욕심도 중요하지만 팀을 위한 선택과 집중도 필요하다는 것을 느낌
  • 일정관리가 중요하다는 것을 크게 느낌
  • 기록하는 습관과 머리가 안돌아갈땐 적는 습관의 중요성을 느낌

김홍범

강은수

이번 프로젝트는 제 첫 6주간의 다소 장기간의 프로젝트였습니다. 시간이 많다고 생각했고, 새로운 기술과 처음 해보는 게임이라는 주제를 다룸에도 불구하고 제 자신이 수월하게 해낼 수 있다고 믿었습니다. 그러나 실제로는 6주라는 기간 안에 개발 기간은 제가 새로운 기술인 WebSocket과 WebRTC 기술을 적용해서 완벽하게 작동되는 게임을 만들기에는 시간도, 제 역량도 턱없이 부족했습니다. 이로 인해 일정 관리에 차질이 생기고 예상한 개발 완수 기간보다 실제 개발 완수 기간이 많이 늦춰졌습니다. 할 수 있을까란 막막함에 많이 힘들었지만, 팀원들의 격려와 도움으로 개발을 마무리할 수 있었습니다.

완성된 프로젝트를 보며 1. 컴포넌트의 구조를 더 적절하게 구성할 수 있지 않았을까, 2. 리덕스를 활용하여 상태 관리를 더욱 철저하게 했어야 했다, 3. 일정관리를 더욱 잘 해야 했다, 4. 일의 우선순위를 매겨서 잘 지켜야겠다 등등 여러 가지를 배웠고, 다음 프로젝트에선 이번 경험을 바탕으로 더욱 수월하게 진행할 수 있겠다는 생각을 했습니다. Meeple 팀원들과 함께 고생하며 완성해 낸 GamePlanet이 좋은 결과를 얻게 되어서 정말 기쁘고, 동료들과 함께 개발 프로젝트를 진행할 수 있어서 정말 값진 경험이었습니다.

유진혁

About

남녀노소 즐길 수 있는 웹기반 보드게임 플랫폼

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors