본문 바로가기

TIL

[TIL]2024-1-24 / 23일차 - Unity 입문 팀 과제 시작

1. 오늘의 알고리즘 코드 카타

수박수박수박수박수박수?

 

 

답안 :

public class Solution {
    public string solution(int n) {
        string answer = "";
        for(int i = 1; i <= n; i++)
        {
            if(i % 2 == 0)
                answer += "박";
            else
                answer += "수";
        }
        return answer;
    }
}

 

뭐 평소에 자주 쓰는 방법으로 해결하긴 했다. 하지만 다른 풀이들을 보니 특이한 기능들을 많이 사용하던데 이 방법이 아닌 복잡한 방법을 사용하는 데 어떤 이유가 있는지 궁금했다.

 

 


 

 

 

그 날이 또 와버렸다.

 

 

 

팀 과제의 시간이다!

 

 

 

 


 

 

 

2. 팀 과제 시작

 

이번 팀 과제의 주제는 간단한 고전 게임들을 유니티를 이용 재해석 하는 게임이다.

고전 게임의 목록은 : 똥 피하기 게임 / 닷지 게임 / 벽돌 깨기

 

우리는 이 중에서 기존 리소스를 활용하기 더 불편하고, 난이도가 비교적 더 높아 보이는 벽돌 깨기는 배제한 뒤 똥 피하기와 닷지 게임 중에서 선택하기로 했다.

 

닷지 게임에 의견이 집중되고 이에 대한 구현 요구 필수 기능과 추가 기능을 살펴보며 어떻게 재해석 할지 브레인 스토밍을 했다.

 

  • 필수 구현 사항
    • 게임 화면: 게임을 플레이할 수 있는 화면을 만들어야 합니다. 화면 크기, 배경 등을 설정해야 합니다.
    • 캐릭터: 주인공 캐릭터와 적 캐릭터를 만들고, 이들을 움직일 수 있도록 구현해야 합니다. 주인공 캐릭터는 플레이어의 조작에 따라 움직여야 하며, 적 캐릭터는 일정한 패턴에 따라 움직여야 합니다.
    • 총알과 공격: 주인공 캐릭터가 총알을 발사할 수 있도록 구현하고, 적 캐릭터에게 공격을 가할 수 있어야 합니다. 또한, 적 캐릭터의 공격 동작을 정의해야 합니다.
    • 충돌 감지: 총알과 적 캐릭터가 충돌했는지를 감지하고, 충돌 시 적 캐릭터를 제거하고 점수를 증가시켜야 합니다.
    • 게임 로직: 게임의 기본 로직을 구현해야 합니다. 게임 시작, 종료, 점수, 생명 등을 관리해야 합니다.
  • 선택 구현 사항
    • 게임 난이도 조절: 난이도를 조절하기 위해 적의 이동 속도, 총알의 발사 속도, 적의 패턴 등을 조절할 수 있습니다.
    • 아이템 시스템: 게임을 더 흥미롭게 만들기 위해 아이템 시스템을 도입할 수 있습니다. 플레이어가 아이템을 획득하면 임시로 강화되는 아이템, 체력을 회복하는 아이템 등을 추가할 수 있습니다.
    • 특수 능력: 플레이어 캐릭터에 특수 능력을 부여하여 게임 플레이를 다양화할 수 있습니다. 예를 들어, 무적 모드, 빠른 이동 모드 등을 추가할 수 있습니다.
    • 멀티플레이어 모드: 다른 플레이어와 함께 플레이할 수 있는 로컬 멀티플레이어 모드를 추가할 수 있습니다.
    • 시각적 효과: 게임에 다양한 시각적 효과를 추가하여 게임의 시각적 품질을 향상시킬 수 있습니다.
    • 사운드 효과: 게임에 배경 음악과 효과음을 추가하여 게임의 분위기를 높일 수 있습니다.

공격 기능이 필요하단 것은 전투가 필연적으로 들어가야 한다는 것

 

그래서 핵심 구현 기능은 탄막+전투라고 보았고 이를 중점으로 주제를 찾아보았다.

 

 


 

 

 

 

이러던 중 이들과 비슷한 게임들을 이야기 해보다가 아이작의 번제 이야기가 나왔고, 이를 좀 더 탄막 피하기에 집중 시키는 게임도 충분히 재미있을 것이라고 생각하여 우리 조는 닷지 게임 + 아이작의 번제 라는 게임 컨셉을 잡았다.

 

 

 

이를 위해 게임의 컨셉을 잡으며 플로우 차트를 짜보았다. 이를 위해 내 현란한 그림 실력을 자랑했다.

 

게임의 주요 컨셉은 닷지의 탄막 회피와 아이작의 방으로 이루어진 스테이지 / 아이템 수집이고

각 방 (필수 구현 기능 중 난이도 기능을 접목하여 난이도" 상 / 중 / 하" 로 이루어진 각 방 입구 3개가 존재)에 진입하게 되면 난이도에 따른 적 종류와 숫자가 있어 이들의 탄막을 정해진 시간 동안 회피한 뒤 시간을 모두 버티면 무적 상태였던 적들을 죽일 수 있게 변하여 복수하는 컨셉이다. 보스도 같은 방식으로 더 어려운 전투를 제공하는 방식이다.

 

이를 위한 게임 배경은 역시나 내일배움캠프 훈련 과정.

주인공은 익명의 내배캠 학생이며 적들은 우리가 여태까지 했던 과제들이다. (리소스 재활용 개꿀)

난이도는 수준 별 학습반 처럼 챌린지반 / 스탠더드반/ 베이직반으로 나누었다.

우리가 먹는 아이템들은 내배캠의 강의와 튜터님, 매니저님들과 관련된 물건들이 나온다.

(ex: 이XX 매니저님의 국뽕퀴즈 문제리스트 / 김XX 튜터님의 고양이 / 문XX 매니저님의 TIL  / 한XX 매니저 피규어)

 


 

다행인 것은 기본 필수 구현 기능들은 거의 모두 강의 내용에서 다룬 것들이다.

그래서 이 부분은 괜히 작업을 나누기 보다는 팀장이 강의내용대로 깔끔하게 기반을 만들어두기로 했다.

 

몇가지 추가 기능도 개인 과제에서 다룬 내용을 비틀면 구현 가능할 것 같았다.

 

우선 작업 현황을 확인하는 것을 돕기 위해 팀에서 몇 가지 약속을 하였다.

 

과제 발제가 진행될 때 보여주었던 Git 컨벤션을 우리도 사용하기로 하였고

 

나는 추가적으로 팀 노션에 경영 때 배웠던 칸반 보드를 만들었다.

이런 방식으로 필수 기능 / 추가 기능 / 버그 리포트 별 보드를 만들어 두었다.

 

보드에서 보는 것처럼 내가 초반에 방 로직을 생각해 보는 것을 하기로 했고

캠프에서 처음 코딩을 시작한 코딩 초보로서 이런 것들은 부담스럽지만 어쩔 수 없다.

 

 

그래서 대충 방 스테이지 진행에 필요한 로직과 플로우를 구상해 보았다.

 

내일은 기본 기능들이 구현되어 공유되면

 

그것을 기반으로 먼저 방 로직을 대충 구성하고 시간이 된다면 방 그래픽을 구현해두어 게임의 전반적인 그래픽 분위기를 잡아두려고 한다.

 

 

 

쉬고싶어요 엉엉

분명 TIL 매일 제출했는데 하루 빠져있는 걸로 되어 있어서 뒤늦게 다시 제출했는데 인정 되었지만

연속 출석 기간이 짤려버렸다. 매니저님 제 연속 일수 돌려줘요 엉엉