00. 개발 계획서
제출일 : 2025.08.16(토)
|
프로젝트 개발 계획서
|
||||
|
프로젝트
|
라이어 게임
|
|||
|
개발인원
|
이명진
|
|||
|
활동일시
|
25.08.14 ~ 25.08.20
|
장소
|
공학 1관 드론융합실
|
|
|
주요주제
|
상대방을 속여 최후의 승자가 되거나 협력하여 공동의 승리를 할 수 있는 멀티플레이어 심리 게임 구현
|
|||
|
개발 환경
|
- OS : Ubuntu 24.04.2 LTS
- Language : C++
- IDE : Qt Creator, MySQL
|
|||
|
구현예정기능
|
- 회원가입 : 사용자로부터 아이디, 비밀번호, 닉네임 등의 정보를 받아 MySQL 데이터베이스에 안전하게 저장하고, 비밀번호는 암호화하여 저장함.
- 로그인: 사용자가 입력한 아이디와 비밀번호를 데이터베이스의 정보와 비교하여 인증을 처리.
- 회원정보 찾기 (아이디/비밀번호 찾기): 사용자가 등록한 이메일 주소 등을 통해 아이디를 찾거나, 비밀번호를 재설정할 수 있는 기능을 제공.
- 회원정보 변경: 로그인한 사용자가 개인 정보를 수정할 수 있도록 함.
- 방 생성 및 참여: 사용자가 직접 게임방을 만들거나, 다른 사용자가 만든 방에 참여할 수 있는 기능을 구현.
- 일반 채팅: 게임 시작 전, 대기실이나 로비에서 플레이어들이 자유롭게 대화할 수 있는 채팅 기능을 제공.
- 게임 채팅: 게임 시작 후, 라운드당 한 번씩만 채팅할 수 있도록 제한하여 무분별한 힌트 노출을 방지하고 심리전을 강화.
- 카테고리 : 게임 시작 전, 플레이어들이 카테고리를 선택.
- 단어 분배 : 서버는 선택된 카테고리에서 무작위로 정답 단어와 라이어 단어를 선정. '라이어'를 제외한 모든 플레이어에게는 정답 단어를, '라이어'에게는 정답과 연관성이 낮은 다른 단어를 보여줌.
|
|||
|
예상문제점
|
- 네트워킹 및 동기화 문제 : 멀티플레이어 게임 특성상 네트워크 지연이 발생하면 게임 진행에 문제가 생길 수 있음.
- 공정성 문제 : 승패에 영향을 주는 중요한 데이터가 클라이언트에서 조작될 경우, 게임의 공정성이 무너질 수 있음.
- 게임 밸런스 : 게임 규칙이 너무 복잡하거나, 특정 전략이 너무 강력하면 게임의 재미가 반감될 수 있음.
|
|||
|
유스케이스
|
01. 참조
|
|||
|
요구사항 명세서
|
02. 참조
|
|||
|
순서도
|
03. 참조
|
|||
|
화면 구성도
|
04. 참조
|
|||
|
목업
|
05. 참조
|
|||
|
일정표
|
06. 참조
|
|||
|
테이블 명세서
|
07. 참조
|
|||
|
ERD
|
08. 참조
|
|||
01. 유스케이스

02. 요구사항 명세서
|
기능적 요구사항
|
|||
|
ID
|
기능명
|
세부내용
|
UC
|
|
FR01
|
회원가입
|
- 아이디, 비밀번호, 닉네임으로 회원가입할 수 있어야 함.
- 비밀번호는 암호화되어야 함.
|
UC01
|
|
FR02
|
로그인
|
- 아이디와 비밀번호를 입력하여 로그인할 수 있어야 함.
|
UC02
|
|
FR03
|
회원정보 찾기
|
등록된 이메일 등을 통해 아이디를 찾거나 비밀번호를 재설정할 수 있어야 함.
|
UC03
|
|
FR04
|
회원정보 변경
|
로그인 후 비밀번호와 닉네임을 변경할 수 있어야 함.
|
UC04
|
|
FR05
|
게임방 생성
|
게임 제목, 최대 인원 등을 설정하여 새로운 게임방을 만들 수 있어야 함.
|
UC05
|
|
FR06
|
게임방 입장
|
생성된 게임방 목록을 보고 원하는 방에 입장할 수 있어야 함.
|
UC06
|
|
FR07
|
일반 채팅
|
게임 시작 전 대기실에서 자유롭게 채팅할 수 있어야 함.
|
UC07
|
|
FR08
|
게임 시작
|
방장이 게임을 시작할 수 있어야 함.
|
UC08
|
|
FR09
|
게임 채팅
|
게임 시작 후에는 라운드당 한 번씩만 채팅할 수 있어야 함.
|
UC09
|
|
FR10
|
카테고리 선택
|
게임 시작 후 각 라운드마다 참여자들이 게임의 카테고리를 선택할 수 있어야 함.
|
UC10
|
|
FR11
|
단어 분배
|
선택된 카테고리에서 정답 단어와 라이어 단어를 선정하여 각 플레이어에게 다르게 분배해야 함.
|
UC11
|
|
FR12
|
단어 확인
|
'라이어'를 제외한 모든 플레이어는 정답 단어를, '라이어'는 다른 단어를 화면에서 확인할 수 있어야 함.
|
UC12
|
|
FR13
|
투표
|
라운드 종료 후, 플레이어들이 '라이어'라고 생각하는 사람에게 투표할 수 있어야 함.
|
UC13
|
|
FR14
|
승패결정
|
투표 결과 등 게임 규칙에 따라 '라이어'를 찾아내거나 '라이어'가 승리하는 등의 최종 승패를 결정해야 함.
|
UC14
|
|
FR15
|
게임 상태
동기화
|
시스템은 모든 플레이어의 게임 상태(턴, 남은 시간, 채팅 내용 등)를 실시간으로 동기화해야 함.
|
UC15
|
|
비기능적 요구사항
|
||
|
ID
|
유형
|
세부내용
|
|
NFR01
|
성능
|
C++와 MySQL을 활용하여 10명 이내의 플레이어가 참여하는 게임 환경에서 딜레이 없이 원활하게 작동해야 함.
|
|
NFR02
|
보안
|
비밀번호는 암호화하여 저장해야 하며, 회원정보 찾기/변경 시 강력한 본인 인증 절차를 거쳐야 한다.
|
|
NFR03
|
안정성
|
서버 오류 발생 시 데이터 유실을 최소화하는 방안을 고려해야 함.
|
|
NFR04
|
사용성
|
Qt Creator로 개발된 UI는 직관적이며 사용하기 편리해야 함.
|
|
NFR05
|
호환성
|
Ubuntu 24.04.2 LTS 개발 환경에서 안정적으로 동작해야 함.
|
03. 순서도

04. 화면 구성도
1. 로그인 페이지

2. 메인 페이지

3. 게임 페이지

05. 목업










06. 일정표

07. 테이블 명세서
|
회원 정보
|
|||
|
Table
|
users
|
||
|
컬럼명
|
데이터 타입
|
제약 조건
|
설명
|
|
user_id
|
VARCHAR(50)
|
PRIMARY KEY / NOT NULL
|
로그인 아이디
|
|
password
|
VARCHAR(255)
|
NOT NULL
|
비밀번호
|
|
nickname
|
VARCHAR(50)
|
NOT NULL / UQ
|
닉네임
|
|
email
|
VARCHAR(255)
|
NOT NULL / UQ
|
이메일
|
|
방 정보
|
|||
|
Table
|
rooms
|
||
|
컬럼명
|
데이터 타입
|
제약 조건
|
설명
|
|
room_id
|
INT
|
PRIMARY KEY / NOT NULL / AI
|
방 고유 식별자
|
|
room_name
|
VARCHAR(255)
|
NOT NULL
|
방 이름
|
|
creator_id
|
VARCHAR(255)
|
NOT NULL / FK REFFERENCES user(user_id)
|
생성자 아이디
|
|
status
|
VARCHAR(50)
|
NOT NULL / DEFAULT "waiting"
|
방 상태
|
|
created_at
|
TIMESTAMP
|
DEFAULT CURRENT_TIMESTAMP
|
방 생성 시간
|
|
방 참가자
|
|||
|
Table
|
room_members
|
||
|
컬럼명
|
데이터 타입
|
제약 조건
|
설명
|
|
member_id
|
INT
|
PRIMARY KEY / AI
|
참여 기록 고유 식별자
|
|
room_id
|
INT
|
NOT NULL / FK REFERENCES rooms(room_id) / UQ
|
참여한 방 아이디
|
|
user_id
|
VARCHAR(255)
|
NOT NULL / FK REFERENCES users(user_id) / UQ
|
참여자 아이디
|
|
join_time
|
TIMESTAMP
|
DEFAULT CURRENT_TIMESTAMP
|
입장 기록 시간
|
|
게임 진행 상태
|
|||
|
Table
|
game_states
|
||
|
컬럼명
|
데이터 타입
|
제약 조건
|
설명
|
|
game_state_id
|
INT
|
PRIMARY KEY / AI
|
게임 고유 식별자
|
|
room_id
|
INT
|
NOT NULL, FK REFERENCES chatroom(room_id)
|
게임 진행 중인 방 아이디
|
|
current_turn_user_id
|
VARCHAR(255)
|
현재 차례인 사용자 아이디
|
|
|
state_data
|
JSON
|
게임 상세 상태
|
|
|
last_updated
|
TIMESTAMP
|
DEFAULT CURRENT_TIMESTAMP
|
마지막 게임 갱신 시간
|
06. ERD

'C++ > Project' 카테고리의 다른 글
| [LMS7 24/28주차] 1024 MFC 프로젝트, "CanSCan" 완료 보고서 (0) | 2026.05.06 |
|---|---|
| [LMS7 24/28주차] 1024 MFC 프로젝트, "CanSCan" 개발계획서 (0) | 2026.05.06 |
| [LMS7 16/26주차] 0826 [제60회 전국기능경기대회] 전시 작품 제작 프로젝트, "스마트홈" 완료 보고서 (0) | 2025.11.11 |
| [LMS7 16/26주차] 0826 [제60회 전국기능경기대회] 전시 작품 제작 프로젝트, "스마트홈" 개발 계획서 (0) | 2025.11.11 |
| [LMS7 14/28주차] 0812 Qt 개인 프로젝트, 라이어 게임 완료 보고서 (0) | 2025.09.04 |
