본문 바로가기
내일배움 강의/강의-게임서버

3. 게임 기획해보기

by GREEN나무 2024. 12. 11.
728x90

학습

 

PD가 되어보자!

시나리오, 장르, 방향성 정하기

 

🔷 장르를 정하고 장르에 맞는 서비스 탐색

장르

  1. 액션 게임
  2. 어드벤처 게임
  3. 롤 플레잉 게임(RPG)
  4. 시뮬레이션 게임
  5. 전략 게임(RTS)
  6. 스포츠 게임
  7. 레이싱 게임
  8. 퍼즐 게임
  9. 호러 게임
  10. 음악/리듬 게임
더보기

각 장르에 맞는 서비스 및 구현 가능한 기능과 추천 게임 리스트입니다.


1. 액션 게임

  • 서비스 아이디어:
    • 빠른 반응과 조작감을 위한 정밀 컨트롤 시스템.
    • 리더보드 및 랭킹 시스템 제공.
    • PVP 모드와 협동 모드.
    • 다양한 캐릭터와 무기의 커스터마이징 기능.
  • 추천 게임:
    • Devil May Cry 5
    • Hades
    • Cuphead

2. 어드벤처 게임

  • 서비스 아이디어:
    • 스토리 분기점 제공 및 플레이어 선택에 따른 다양한 결말.
    • 오픈월드에서의 탐험과 수집 시스템.
    • 몰입을 돕는 사운드와 시각적 연출.
  • 추천 게임:
    • The Legend of Zelda: Breath of the Wild
    • Life is Strange
    • Firewatch

3. 롤 플레잉 게임 (RPG)

  • 서비스 아이디어:
    • 깊이 있는 캐릭터 성장 시스템과 스킬 트리.
    • 멀티플레이를 지원하는 길드 시스템.
    • 퀘스트 기반 진행 및 보상 시스템.
  • 추천 게임:
    • The Witcher 3: Wild Hunt
    • Final Fantasy XIV
    • Genshin Impact

4. 시뮬레이션 게임

  • 서비스 아이디어:
    • 현실감을 살린 AI 상호작용.
    • 경제 관리 및 자원 관리 시스템.
    • 사용자가 원하는 요소를 추가할 수 있는 모드 지원.
  • 추천 게임:
    • The Sims 4
    • Stardew Valley
    • Cities: Skylines

5. 전략 게임 (RTS)

  • 서비스 아이디어:
    • 실시간 대전 시스템.
    • 맵 에디터와 커뮤니티 기반 공유.
    • AI 난이도 선택 가능.
  • 추천 게임:
    • Starcraft II
    • Civilization VI
    • Age of Empires IV

6. 스포츠 게임

  • 서비스 아이디어:
    • 실제 선수 데이터 기반 시뮬레이션 매치.
    • 친구와 함께 즐길 수 있는 로컬 멀티플레이.
    • 리그 시스템 및 트레이딩 기능.
  • 추천 게임:
    • FIFA 23
    • NBA 2K24
    • Rocket League

7. 레이싱 게임

  • 서비스 아이디어:
    • 차량 튜닝 및 커스터마이징.
    • 다이나믹 날씨 시스템을 통한 현실감 증대.
    • 멀티플레이 및 실시간 경기 중계.
  • 추천 게임:
    • Forza Horizon 5
    • Mario Kart 8 Deluxe
    • Gran Turismo 7

8. 퍼즐 게임

  • 서비스 아이디어:
    • 직관적인 조작과 깔끔한 인터페이스.
    • 친구와 경쟁할 수 있는 타임어택 모드.
    • 난이도 조절 및 힌트 제공.
  • 추천 게임:
    • Tetris Effect
    • Portal 2
    • The Witness

9. 호러 게임

  • 서비스 아이디어:
    • 몰입감을 극대화하는 VR 지원.
    • 랜덤으로 생성되는 적 AI 및 환경.
    • 정교한 음향효과를 활용한 긴장감.
  • 추천 게임:
    • Resident Evil Village
    • Amnesia: The Dark Descent
    • Outlast

10. 음악/리듬 게임

  • 서비스 아이디어:
    • 다양한 음악 장르를 지원하는 라이브러리.
    • 멀티플레이 대결 모드.
    • 플레이에 따라 맞춤형 플레이리스트 생성.
  • 추천 게임:
    • Beat Saber
    • Rhythm Heaven
    • Osu!

 

 

 

🔹사이드뷰 점핑 액션 게임 

      ex) 별의 커비, 슈퍼마리오, 메탈 슬러그 점프 점 

🔹 플렛폼 게임  

 

※ 어떤 프로젝트를 하기 전에 유명한 비슷한 게임 가저와서 어떻게 구현한건지 글로 정리한 다음에 내거를 만들기

 

🔷 컨텐츠 구상

  1. 스테이지가 있는 게임 ( ~점 이상이면 2스테이지, ~점 이상이면 3스테이지...)
  2. 아이템 획득으로 점수 얻기

1. Stage

🔹시간에 따른 점수 획득
       기본적으로 오른쪽을 이동하면서 장애물을 피하는 게임
      오래 버틸수록 높은 점수 획득 (시간에 따른)
🔹 스테이지에 따라서 더 높은 점수 획득
        0점 , 1스테이지 1000점, 2스테이지
        위와 같이 점수로 나뉘어서 스테이지 구분
         스테이지가 올라갈수록 시간당 높은 점수 획득 가능 
ex) 1스테이지 = 1점 per 1s, 2스테이지 = 2점 per 1s

 

2. Item
🔹 아이템 종류에 따라 다른 점수 획득
          이동 중 아이템 무작위 생성
🔹 스테이지에 따라 생성되는 아이템 구분
        1스테이지에는 1번 아이템만,  2스테이지에는 2번 아이템까지 나오는 것
        높은 스테이지의 아이템에서는 더 높은 점수 획득 가능

 

※ 테이블 준비

   1. 엑셀로 만들어서 csv로 저장

   2. json 파일 만들

🔷 데이터 테이블 만들기 - json

'#'으로 시작하는 것은 기획 관리용 이름

   테이블화 하는 것이아니라 기획단계에 그냥 적는 것

 

스테이지

  ID #NAME SORE
type INT STRING INT
  1000 시작 스테인지(1) 0
  1001 2 100
  1002 3 200
  1003 4 300

 

ID 1001로 가면 스테이지(2)가 실행됨

더보기
{
  "name": "stage", // 테이블 이름
  "version": "1.0.0", // 테이블 버전
  "data": [
    { "id":  1000, "score": 0 },
    { "id":  1001, "score": 100 },
    { "id":  1002, "score": 200 },
    { "id":  1003, "score": 300 },
    { "id":  1004, "score": 400 },
    { "id":  1005, "score": 500 },
    { "id":  1006, "score": 600 }
  ]
}

아이템

  ID #NAME score
TYPE int string int
  1 red 10
  2 yellow 20
  3 purple 30
  4 blue 40
더보기
{
  "name": "item",
  "version": "1.0.0",
  "data": [
    { "id":  1, "score": 10 },
    { "id":  2, "score": 20 },
    { "id":  3, "score": 30 },
    { "id":  4, "score": 40 },
    { "id":  5, "score": 50 },
    { "id":  6, "score": 60 }
  ]
}

 

아이템 해금

  ID STAGE_ID ITEM_ID
TYPE int int int
  101 1001 1
  201 1002 2
더보기
{
  "name": "item_unlock",
  "version": "1.0.0",
  "data": [
    { "id":  101, "stage_id": 1001, "item_id": 1 },
    { "id":  201, "stage_id": 1002, "item_id": 2 }
  ]
}
더보기

ex)여러 스테이지에서 아이템을 사용하고 싶다

아이템

  ID #NAME score
TYPE int string array
  1 red {1000,1001}
  2 yellow  
  3 purple  
  4 blue  

 

아이템 해금

  ID STAGE_ID ITEM_ID
TYPE int int array
  101 1001 [1]
  201 1002 [1,2]

 

회의 시간 예 - '서버에서 매핑하기 힘들고 조합하기 힘들어요. 새로 테에블을 만듭시다'

 

🔷 패킷 구조 설계

클라이언트 - 서버가 주고 받을 패킷의 명세 ex) API명세서

1) 공통 부분

필드 명 타입 설명
handlerID int 요청을 처리할 서버 핸들러의 ID
userId int 요청을 보내는 유저의 ID
clientVersion string 현재 클라이언트 버전 (”1.0.0”) (고정)
payload JSON 요청 내용

 

2) 요청 예시

{
	handlerId: 0,
	userId: 0,
	clientVersion: "1.0.0",
	payload: {},
}

스테이지 이동

필드 명 타입 설명
currentStage int 현재 스테이지
targetStage int 이동하는 스테이지
{
	// 공통 부분
	handlerId: 0,
	userId: 0,
	clientVersion: "1.0.0",
	payload: {
		// 스테이지 정보
		currentStage: 0,
		targetStage: 0,
	}
}

currentStage  : 유저가 존재하는 현재 스테이지와 DB의 스테이지를 비교하여 '이 사람이 여기에 있는 게 맞구나'를 확인하기 위함

targetStage :  1. 이동하려는 스테이지를 정당하게 이동하려 하는가

                       2. 그 스테이지가 실제로 존재하는 가

                       를 서버입장에서 검증하기 위해 정보를 받음

 

 

아이템 획득

필드 명 타입 설명
itemId int 획득하는 아이템 ID
     
{
	// 공통 부분
	handlerId: 0,
	userId: 0,
	clientVersion: "1.0.0",
	payload: {
		// 아이템 정보
		itemId: 0,
	}
}

ex) { itemId : 1} 을 받았을 때 점수 10을 더해주기 위해

      1.  { itemId : 1} 의 데이터(아이템)이 있는지 검증

      2. 있다면 10점 저장

 

 

3) 응답 예시

필드 명 타입 설명
status enum “success”, “fail”
     
{
  "status": "success",
}

​서버가 유저에게 뭔가 주는 것 없음. 처리 여부를 respons 함.

성공은 "status": "success"  /   실패는  "status":  “fail”

 

 

그 외 필요한 핸들러

게임 시작 / 게임 종료

 


※ 요약

  1. 시나리오, 장르, 방향성 결정
    • 장르 선정: 액션, RPG, 퍼즐 등
    • 비슷한 게임 분석 후 구현 방식 정리
  2. 콘텐츠 구상
    • 스테이지 설계: 점수 기반 스테이지 이동 및 시간당 점수 획득
    • 아이템 설계: 아이템별 점수 차등 부여 및 스테이지별 아이템 제한
  3. 데이터 설계
    • 테이블화: JSON 또는 CSV 활용
    • 아이템/스테이지 정보 구조화
  4. 패킷 구조 설계
    • 클라이언트-서버 간 명세
    • 스테이지 이동, 아이템 획득 처리 로직 포함

※ 기억할 것

  • 비슷한 게임의 시스템을 조사하고 이를 참고해 기획.
  • 데이터 테이블은 초기 기획 단계에서 명확히 작성해야 개발 과정에서 수정 부담 감소.
  • 서버 검증을 통해 유효성을 확보하는 설계 필요.

※ Tip

  1. 기획 단계에서 스테이지와 아이템의 관계를 시각화해보면 구조 설계가 용이.
  2. JSON 테이블의 버전을 명시하여 나중에 업데이트 관리를 체계적으로 수행.
  3. 패킷 설계 시, 공통 필드를 먼저 정의하고 이를 기반으로 요청/응답 구조를 세분화.
  4. 팀 협의 시 기획 의도와 데이터 활용 방안을 명확히 설명해 공통 이해도를 높이기.

 

'내일배움 강의 > 강의-게임서버' 카테고리의 다른 글

5. 서버 로직 개발  (0) 2024.12.12
4. 개발 환경 세팅  (2) 2024.12.11
2. HTTP, TCP, 웹소켓  (2) 2024.12.11
1. 게임 개발의 시작  (1) 2024.12.10