
오늘은 역할분담이 완료되었으므로, 개인적인 RnD를 진행한다
단순한 조작감. 고난이도의 회피. 지속적인 일방향 공격을 통한 액션 중심의 게임
패턴 설계. 점진적 난이도 조절이 필요
프로그래밍 적으로는 물리처리가 중요한 게임이다
SkyForce Reloaded
1945
드래곤 플라이트
니어: 오토마타(3D 환경 탄막)
엔터더건전(로그라이크를 접목할 수도 있다)
브롤스타즈(멀티 배틀로얄 탄막)
플레이어
이동, 공격이 기본 시스템. 추가적으로 회피, 스킬, 아이템 사용 등을 고려할 수 있다. Transform 이동이 아니여야 한다. 유니티에서는 FixedUpdate와 Update의 Rigidbody 경우 서로 라이프사이클이 달라서 충돌 문제가 정확하지 않다. Rigidbody의 velocity를 통해 구현하는 것이 추천된다. AddForce의 경우 회피에 적합하지 않다. MoveTowards의 경우, 가속이 추가되기 때문에 게임의 컨셉에 따라 고려할 만 하다.
물리 엔진 처리에서
Translate든MoveTowards든 충돌의 범위가 일치할 필요가 있다.
몬스터 패턴
두 가지 종류가 있다. 상태패턴으로 플레이어 인식해서 추적, 공격하는 몬스터가 있는 반면, 정해진 루트대로 이동하면서 정해진 패턴으로 공격하는 적도 있을 수 있다. 애니메이션으로 모든 행동을 정해놓는 것도 방법이다. 애니메이션으로 이동 경로를 짜고, 이동 경로를 움직이는 중에 Fire 함수를 수행하는 애니메이션 이벤트를 짜면 된다. 이 경우 애니메이션은 코드와 달리 수정하기도 쉽다. 코드로 경로를 짤 경우, 처음부터 다시 짜야 되지만, 애니메이션이면 녹화를 추가하면 될 뿐이다.
물리 충돌 처리
Rigidbody로 이동하는 것이 중요하다. 충돌처리는 Update가 일치시킬 필요가 있다.
레이저 공격의 경우, Fire와 동시에 Trigger 충돌체를 경로상에 생성해서 해당 충돌체에 검출된 collider(적)들을 피격 시키는 것도 방법이다.
아이템
스테이지
점수

1945 III의 보스들을 참고하자캐릭터
몬스터 AI
스스로 움직이는 몬스터 구현 필요.
재화/ 성장 : DontDestroyOnLoad를 통해 어느 씬을 가도 파괴되지 않게 함. 싱글톤을 통해 참조하는 식으로 구현 가능.
타이틀 씬에서 게임 시작을 눌렀을 때, 초기 값을 세팅하는 경우에서 싱글톤에 있는 데이터들을 초기값으로 세팅해주는 리셋 데이터 기능이 필요.
스테이지(랜덤)
Skull을 레퍼런스로 볼 수 있다. 스테이지를 여러개 준비 해두고, 랜덤으로 스테이지를 로드 하는 식으로 구현할 수 있음. 절차적 맵 생성 알고리즘이 아님. 맵 풀로 맵들을 저장해두고 그 중 하나를 선택해서 로딩함.절차적 맵 생성 알고리즘을 통해 레벨을 생성함.반복 요소

스스로 목표를 세우고, 살아남는 것 자체가 목적인 게임
플레이어 생존
도구
제작
하드코딩 : 모든 조합법을 전부 훑어보는 식으로 코딩하는 것이 가장 빠른 구현 방법이다. 하드코딩이지만, 개발하기에는 용이하다해싱 : 아이템들을 각각 고유의 ID를 부여한다. 딕셔너리를 통해 가장 낮은 조합 원재료 아이템 ID 번호를 기준으로 조합법을 탐색한다. 최대 8개의 아이템까지만 조합으로 사용된다고 가정할 때, 각 자리에 4자릿수의 숫자를 넣는다. int의 길이를 상정해서 8개다. 낮은 숫자 순으로 정렬 후, 해당 키 값을 딕셔너리에 넣으면 해당 조합 완성 아이템이 나오는 식으로 구현 가능.string은 무적이다 : "나무, 돌", "나무, 돌X2" -> "곡괭이". 2번의 해싱 방법에서 숫자 ID 대신 string을 쓰는 것이다. Resources 폴더에서 찾아서 만들어주는 시스템을 생각해볼 수 있다.기획과의 대화를 통해 오버 엔지니어링이 되지 않게 조심하자. 그냥 하드 코딩하는 것이 나을 수 있다
인벤토리파밍습득 : 다형성이 확보되어 있어야 함. 습득 시 다음 스테이지 해금, 사용, 습득 즉시 사용 등 여러가지 방식으로 상호작용이 이루어 질 수 있기 때문임. 모든 아이템이 인벤토리에 들어갈 수 있는 경우가 아닐 수 있음. 어댑터 패턴을 사용하는 것을 추천함. 같은 Use라는 인터페이스 함수를 사용하지만, 아이템마다 다른 방식을 적용시킬 수 있음. 다른 속성을 부여해줄 수 있음