1. 리드미도 잘 작성해주셨고 커밋 내용도 보기 좋게 잘 적어주셨습니다.
2. 게임 자체를 굉장히 완성도 있고 통일감 있게 만들어주셔서 보기 좋았고 외형적으로는 포트폴리오로 손색이 없어보입니다.
3. 플레이어 캐릭터가 앞으로 나아가는게 아니라 배경을 움직여서 착시를 주는 트릭도 현업에서 많이 쓰이는 방식인데 여러 고민을 한게 보여서 좋았습니다.
4. Start 나 Update 메소드가 쓰이지 않는데 스크립트 상에 남아있는 경우가 있습니다. Update 메소드 같은 경우에는 존재하기만 해도 성능을 잡아먹기 때문에 사용하지 않는다면 Update 메소드는 반드시 삭제해주세요. (한두개는 상관없지만 안쓰이는 update가 많이 쌓이게 되면 좋지 않습니다.)
5. GameManager 스크립트에서 너무 많은 기능이 부여되어있습니다. 솔리드원칙의 단일책임원칙에 따라서 기능 분리를 시도해보시길 바랍니다.
6. 여러 Enemy의 패턴을 만들기 위해서 스위치문과 Enum타입을 사용하셨는데, 절차적으로 코드를 작성해주셔서 만약 Enemy 종류가 더욱 많아지게 된다면 그 때마다 수정해야할 코드량이 엄청 많아집니다. 해당 부분을 공통 Class로 작성하고 상속이나 virtual 등의 기법을 사용했다면 Enemy 마다의 고유의 스크립트가 생성되어 관리하기가 쉬워졌을 것 같습니다. 객체지향적 리팩토링을 시도해보시길 권장드립니다.
7. 게임 플레이 과정에서 많은 총알이 생성 및 파괴가 되는데 오브젝트풀링 기법을 꼭 도입하셔야 포트폴리오로 사용할 때 코드적으로도 의미가 있을 것 같습니다.
8. 총알이나 아이템 같은 부분에서도 상속같은 개념을 도입해서 확장성까지 보장하신다면 훨씬 더 완성도 높은 결과물이 될 것 같습니다.
직접 작업한 부분에 대한 피드백은 3번, 4번과 5번.
우선 3번은 사실 빈상태에서 시작하자니 막막해서 인터넷을 찾아보다가 발견한 방법이었다.
이미지 3개(Top, Middile Bottom) 를 그룹으로 만들어서 플레이어는 가만히 있으면서도 배경 이미지 그룹을 루프 안에 넣어서 3개의 이미지 그룹을 무한히 루핑시키는 방법.
다만 이 부분에서 아쉬웠던 부분은 layer order를 지정하는걸 미처 생각하지 못했다..
중간에 플레이어와 플레어의 총알이 이미지 뒤로 가리는 것을 보고 그때서야 아차 싶었던...
이 부분은 스스로 했다기보다 참고한 자료들이 많고 따라했다는게 맞는 것 같아 이번주 주말에 다시 한번 처음부터 짜보기로 했다. layer order도 마이너스로 맞춰주기 기억..
간단한 버튼 이벤트 코딩을 할때에도 start와 update를 그대로 남겨두고 코드를 짤때가 많았는데
이 부분 피드백을 보고 사용하지 않을때는 지워야 된다는 것을 배웠다.
특히 update 함수는 빈 함수여도 있기만 하면 계속 매주기마다 체크하는 것 같아서 ...
안 쓰는 함수들 꼭 정리하고 코딩하기.
사실 이 부분이 제일 어려운 것 같다. 게임매니저라는게 아직 어떤 개념인지 잘 모르겠어서.
다른 클래스에서도 사용해야 하는 부분이면 싱글톤이 되어있는 게임매니저에 넣고 사용하는게 더 편하다고 생각했기 때문.. (심지어 animator도 게임매니저에 있었음)
그런데 아무래도 그렇게 너무 많은 기능을 부여하다보면 게임매니저로서의 의미가 없어지는 것 같다.
정말 게임 매니저 안에서도 필요한 기능 (승패 부분이나 점수 기록하는 부분 같은 전체적인 게임 흐름을 관리하는 코드) 만 넣는 연습을 해봐야겠다.
그리고 정말 다른 클래스의 무언가 필요한 경우에는 상속을 사용해서 해보는걸로.
하나의 스크립트에 여러가지 기능이 구현되어 있으면 높은 결합도를 가질 수도 있을 것 같아서..
다음 프로젝트때는 주의하면서 코딩을 해봐야겠다.
