NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
2018.03.19 판도라큐브 세미나
제작자: 기획 파트 한서현
코멘트: 없음
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2014년 9월부터 12월까지 3개월 단기 프로젝트로 진행되었던 교내 단기 프로젝트의 개발문서이다.
프로젝트를 진행하다보면 기획자로써 어떠한부분이 부족하고 보완해야하는지 많은 고민을 할 수 있어서 좋다.
많은 부분을 녹여내지는 못했지만 코어시스템부분은 내가 생각한데로 녹여낸것 같아 다행이다..
팀원들이 바쁜일정속에 이렇게 따라와주고 완성되어 매우 흡족!? 하다.
NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
2018.03.19 판도라큐브 세미나
제작자: 기획 파트 한서현
코멘트: 없음
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2014년 9월부터 12월까지 3개월 단기 프로젝트로 진행되었던 교내 단기 프로젝트의 개발문서이다.
프로젝트를 진행하다보면 기획자로써 어떠한부분이 부족하고 보완해야하는지 많은 고민을 할 수 있어서 좋다.
많은 부분을 녹여내지는 못했지만 코어시스템부분은 내가 생각한데로 녹여낸것 같아 다행이다..
팀원들이 바쁜일정속에 이렇게 따라와주고 완성되어 매우 흡족!? 하다.
NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
1) 유저가 느끼는 밸런스.
2) 이를 초기부터 기획했던 사례.
3) 전투 레벨링이 없는 상태에서 밸런스 찾기
4) 밸런스를 좀더 재미있게 만들어보기
5) 마치며
수치 밸런스는 1~Max레벨까지 일관되게. 이를 통해 중간 목표지점의 밸런스를 예측가능하게 만들자.
그 뒤에 각각의 구간을 재미있게 만드는데 집중하자.
10. 낙차확률
A의 확률이 실패 시 B의 확률을 계산하는 구현방식
A만 독립시행, B 이후는 종속시행
B 이후부터는 테이블에 표시된 확률과 실제 확률이 다르다.
랜덤 값 추출
(1 ~ 10000)
테이블에 정의된 값보다
낮은가?
A
성공 처리
랜덤 값 추출
(1 ~ 10000)
테이블에 정의된 값보다
낮은가?
B
성공 처리
랜덤 값 추출
(1 ~ 10000)
11. 낙차확률
일하는 입장에서는 테이블에 기록된 값이 실제 값이라 생각하기 마련인데, 실
제로는 다르니 혼동을 일으키기 쉬움
B 의 실제 확률 계산법
‘테이블에 적힌 B확률’ * (1-’A 성공확률’)
C는 또…..
매번 확률을 수정할 때마다 실제 확률도 확인해야 하니, 작업이 번거로움
개인적으로는 선호하지 않습니다.
13. 구간확률
나올 수 있는 가짓수의 확률을 모두 더한 후, 나온 랜덤값이 어느 구간에 위치
하느냐를 판단하여 해당 구간의 결과값을 리턴하는 방식
독립시행
한국 가챠 등에서 가장 기본적으로 쓰이는 확률 구현
구간별 확률을
모두 더함
랜덤 값 추출
(1 ~ Max
구간 확률)
추출된 값이
위치한 구간에
따라 결과
결정
14. 구간확률
전투에서의 사용 예
확률 구간 판정
1~15% 회피
16~90% 타격 파이프라인
91~100% 크리티컬 파이프라인
16. 보정확률
실패한 경우 다음 시행 때 테이블에 지정된 값의 확률 가중치를 더해 성공 확률
을 올리는 구현방법
강화나 퀘스트 아이템 드랍 등에서 자주 사용
성공확률 계산
성공 처리
랜덤 값 추출
(1 ~ 10000)
성공확률 = 테이블에 기록된 확률
+ DB에 저장된 확률 가중치
성공확률보다 낮은가?
실패 처리
확률 가중치
저장
확률 가중치 = DB에 저장된 확률 가중치
+ 테이블에 저장된 보정 확률
확률 가중치
초기화
17. 보정확률
체험 그 외 기타
User DB 계속 실패를 하더라도 언젠가는 성공할
수 있다는 것에 대한 안정감
DB 부담 약간 있음
Server DB 실패의 결과물을 언젠가 서버의 누군가
는 먹을 거라는 점에서 굉장한 북불복
과 물욕을 일으킴
일정 이상의 실패를 브로
드캐스팅하는 경우 효과
증가
확률 가중치를 User DB에 저장할 것인지, Server DB에 저장할 것인지 혹은 정
보를 어느 정도 공개할 것인지에 따라 시스템 상세는 달라진다.
19. 묶음 확률
각 아이템 별로 얻을 수 있는 개수를 정해놓은 후, 획득 시점마다 얻은 아이템
을 기록하여 다음 확률 계산에서 제거하는 방식
대표적인 종속시행 확률
가장 정확한 확률
일본에서 주로 사용(가챠)
획득 가능 상품 = 테이블에 기록된 상품 개수
- DB에 저장된 획득한 상품 개수
획득 가능 상
품 계산
랜덤 값 추출
(1 ~ Max
상품 개수)
추출된 값이
위치한 구간에
따라 상품
지급
모든 상품이 지급되었나?
획득 상품 저
장 DB 초기화
획득 상품 저
장 DB 기록
20. 묶음확률
체험 그 외 기타
User DB 1인 대상 한정으로 가장 정확한 확률을
구현 가능
DB 부담 가장 큼
Server DB 어떻게 보면 매직 더 개더링 등 오프라
인 뽑기 상품 구성 방법
플레이어에게 상품 노출 시 조건부 물
욕 센서 부여 가능
단 당첨이 먼저 노출되어 있을 경우 물
욕 센서 감소
기본적으로 ‘당첨/꽝’이
인정되어야 효과가 큰 만
큼 ‘꽝'이 없어야 하는
한국/일본의 확률 자율
규제제도와 가장 안 맞는
구현
22. 묶음 확률의 변형
묶음 확률을 보여주되 당첨 상품이 나올 경우 묶음 확률 관련 DB를 초기화하는
방식
당첨 상품이 나왔음을 보여줬을 때 가챠 의지가 약해지는 부작용을 해소 가능
하지만 ‘꽝’이 없어야 하는 일본/한국의 자율규제 원칙과 충돌하는 부분이 있음
특히 실제 확률이 얼마나 되는지 계산하기 어려워짐
23. 가챠를 구성할 때 원칙
‘낙차 확률'이나 ‘보정 확률‘, ‘당첨 시 초기화되는 묶음 확률’ 등으로 가챠 시스
템을 구성할 경우 실제 확률을 고시하기에 어려움이 있음
내가 통계에 자신이 있는 것이 아니면 회사에서 공지하는 확률과 실제 확률이 달라
질 가능성이 높음
(유명 원화가 부부의 스타트업으로 유명했던 모 게임의 사례)
시스템은 최대한 단순하게 구성한 후 유저에게 주는 보너스 등은 ‘마일리지’ 등의, 확
률과 별개로 독립된 시스템을 통해 제공하는 것이 깔끔함
24. 최근 중국 가챠 시스템 중 하나의 사례
분석
규칙
가챠에서 나올 아이템을 100개까지 미리 보여준다.
가챠를 실행할 경우 스택 방식으로 미리 보여준 아이템이 뽑힌다.
플레이어는 원할 때 이 리스트를 게임 내 현금재화(ex.보석)를 내고 초기화할 수 있다.
내부 규칙 추정
큰 규칙은 1단계: 묶음확률, 2단계: 구간확률로 추정된다.
묶음확률 규칙에 따라 100개 중에 등급 별로 몇개씩 있을 것인지 정해진 후, 등급 내
실제 드랍 아이템은 구간확률 규칙에 따라 정해지는 방식으로 추정
그렇게 정해진 100개의 아이템을 개인 DB에 저장한 후 UI를 통해 노출하는 방식