카드 매칭 게임 추가 구현에서 내가 맡았던 부분은 게임에 진입할 때, 카드끼리 매치 성공했을 때, 실패했을 때의 효과음 부여였다. 배경음이나 매치 성공 효과음은 이전에 강의를 보고 구현했어서 실패효과음은 생각할 부분도 없었다. 조금 더 나아가서 오디오 매니저의 '매니저
내가 맡은 부분은 카드 매칭 시 실패하면 시간이 증가하는 기능이었다.time += 3.0f;이 코드 하나만 써주면 됐지만! 게임 매니저에 코드 몰아넣는 하드코딩은 지양해야한다. 그래서 타이머 매니저를 만들었다. 대략적인 기능은 아래와 같다.경과하는 시간을 관리한다.인자
항상 저장소로만 사용하던 깃.. 오늘은 진짜 서비스 목적에 맞게 협업에 사용해보았다.완벽한 방법은 아니지만 나중에 참고를 위하여 내가 진행한 과정을 적어놓겠다.공유하는 사람의 리포지토리의 url을 가지고 내 로컬 저장소에 클론을 만들어준다.이렇게 한 후에 만들어진 클론
오브젝트 풀링
오브젝트 풀링 오브젝트 풀링에 대해서 조금 더 공부를 하고 정리를 했다. 오브젝트 풀링 정리 링크 이 공부를 통해서 오브젝트 풀링 뿐만 아니라 객체 생성/소멸에 따르는 문제점에 대해서도 간단하게 알아볼 수 있었다. 오브젝트 풀링 개념은 유니티 뿐 아니라 언리얼 등등 여
오늘부터 새로운 팀원들과 개인프로젝트 1주, 팀 프로젝트 1주, 총 2주 동안 함께하게 됐다. 텐션도 비슷하고 서로 분위기도 비슷하고 편한 느낌이었다.얘기를 좀 많이 했는데 다들 경험들이 다양하셔서 더 열심히 하지 않으면 참여는 커녕 끌려다니겠단 생각이 들었다.이것 또
프로퍼티 다형성 virtual 키워드 원래라면 자식 인스턴스를 부모 형태의 참조 변수로 참조하면 부모의 메서드가 호출되지만, virtual 키워드를 명시해주면 자식의 메서드를 호출한다. 추상화
오늘 포스트 엄청 엄청 길다.그만큼 고생한 것이겠지..다만 남의 코드 보고 바로 이해하는 사람은 없다는게 문제다...이번 텍스트 RPG에는 필수 구현항목이 있고 추가 구현항목(선택)이 있다.필수 구현은 모두 마쳤고 오늘 구현한 상점 판매 기능과 상점의 리팩토링을 포스팅
오늘은 장비 장착 개선, 인벤토리 클래스 구현, 던전 입장 기능 구현을 했다. 1. 장비 장착 개선 기존에는 무기, 방어구, 방패 종류에 상관 없이 모두 장착되게 했었고 변경 후에는 무기, 방어구, 방패 슬롯에 종류에 맞는 장비 한 개씩만 장착되게 했다. 1-1.
오늘은 휴식 기능과 레벨업 기능을 구현했고, 자잘한 수정을 했다.0105 개발한 내용 : TextRPG - 4 (개인)그리고 팀 내부에서 자체적으로 각자 여태까지 한 결과물을 설명해보는 시간을 가졌다.서로의 코딩 스타일이나 아이디어를 볼 수 있는 아주 좋은 시간이 됐다
주말 동안에 열이 38도까지 올라서 병원을 가보니 A형 독감이라고 진단 받았다.오늘은 열이 좀 내렸고, 내가 해야 할 일은 없어서 정말 쉬엄 쉬엄 강의를 들으며 개념 하나 정도만 정리했다.박싱, 언박싱 정리글박싱은 값 형식을 참조 형식으로 형변환 시키는 것이고, 언박싱
오늘부터는 TextRPG를 팀 단위로 진행하게 됐다.진행을 위해서 의논도 하고 깃허브도 다같이 실험해보고 의견도 나누는 시간은 있었지만 지금 당장 쓸 것은 없어보인다..그리고 아직도 컨디션이 많이 좋지 않아 짧게 작성한 코드 하나만..올려보도록한다.이름 입력 받고 그
스택, 큐 구현 / 스킬 클래스 구현
전투 중 스킬 사용 구현 / 원형 큐 구현
직업별 클래스 구현, 스킬 사용 개선
오늘 개발한 내용 오늘은 내가 맡았던 부분을 플레이 해보며 다듬는 느낌으로 진행했다. 게임 진행 중 마나의 표시 내가 스킬을 구현하며 마나도 캐릭터의 필드로 넣었는데 현재 마나 상태를 보여주지 않는 부분이 있었다. 상태창에서 마나표시 여관에서의 상태 표시 코드라고
발표준비와 밀렸던 공부를 하는 시간을 가졌다.
오늘의 핵심 : 땅콩은 견과류가 아니다..그저 "콩"일 뿐이다.
PPU (Pixel Per Unit) / New Input System / 이벤트 처리하기 / 타일 맵 그리기
1 - 8 ~ 1 - 10 강 내용 정리
객체지향 특강 / 개인 공부 / 개인 과제 진행
유니티 입문 개인과제 제출 / 약수의 개수 구하는 공식
드디어 유니티 팀 프로젝트가 시작됐다.
오디오 매니저 구현 / 오디오 리소스 찾기..
오브젝트 풀링 개발 문제 / 최대 공약수와 최소 공배수
오늘 개발한 내용 - 오브젝트 풀링 // 음량 조절 기능/UI 구현 // Lowpass Frequency 적용(먹먹한 소리) // 스냅샷 변경
오디오 매니저 수정 / 충돌 해결
팀 과제 마무리 / 알고리즘 문제 풀이
오늘 공부한 내용 InputSystem -> Invoke Unity Events 강의를 들으며 기록하고자 한 내용 인풋 시스템은 평소처럼 만들어주되 Player에 컴포넌트로 붙인 Player Input의 Behavior는 Invoke Unity Events로 설정해준
공부한 내용 강의 내용 중에 중요하다고 생각한 것 Interface 3강에서 인터페이스를 사용해서 데미지 입는 함수의 정의를 강제함 (인터페이스의 특성 정리) Invoke Repeating 4강에서 Interface의 콜렉션 인터페이스의 콜렉션에 대한 설명 Try
이번 과제는 특이하게 2개 중 하나를 선택하는 것이었다.아직 파일 저장에 익숙치 못해서 회원 가입 기능이 필요한 첫 번째 과제를 선택했다.UI 자체는 시간만 많이 걸렸지 어려울 부분은 없었다.Customer와 ATM, Account를 구분해서 입금과 출금을 간단히 구현
이번 과제는 일정, 컨디션 관리 대폭망이었다.과제의 완성은 체념하고 "UI관리법 터득하기"를 나만의 목표로 세웠다.결과는 필수구현만 개발한 뉴비의 깃허브..전에 같은 조였던 분의 도움을 받아 UI를 프리팹으로 두고 필요할 떄 객체화 해서 사용하는 방법을 알게됐다.우선
게임 개발 숙련 팀 과제 시작
오늘은 건축 기능 강의를 들으며 개발을 진행했다.개발한 내용보다는 발생한 문제에 대해서 적어보겠다.유한한 길이의 레이가 도달한 지점으로부터 객체가 계속 레이를 쏘는 원점으로 다가오는 현상이 발생했다.처음에 이거 실행하고 뭐가 확 다가와서 엄청 놀랐다.우선 알아낸 것은
오늘은 어제 겪은 문제를 해결했다. 생각보다 간단히 원인을 파악했고(구글링) 해결도 빠르게했다.미리보기 오브젝트에도 박스 콜라이더를 두었었다.Ray를 처음 쏠 때는 목표지점에 도달해서 미리보기 오브젝트를 위치시키고그 뒤에 쏠 떄는 오브젝트의 박스 콜라이더에 부딪히고 그
오늘은 팀 프로젝트를 급하게 마무리하느라 적을 것이 없어서 강의를 보며 익힌 건축 기능에 대해서 개념적으로 간략히 정리해보고자 한다. 1. 건축물 미리보기 발헤임 같은 게임에는 건축할 구조물을 선택하면 초록색으로 미리보기를 볼 수 있다. 1-1. Ray로 미리보기
디자인 패턴 특강 - 다이어그램
강의 정리 - 클래스 다이어그램
카메라 효과
Boids 알고리즘(군집 이동 알고리즘) Boids 알고리즘은 크레이그 레이놀즈(Craig Reynolds)에 의해 개발된 인공 생명 프로그램이다. Boids 규칙 Boids 알고리즘에는 3가지의 규칙이 있고, 이 규칙들이 조화를 이루어 특색있는 움직임을 만들어낸다.
cohesionDirection.Normalize(); 했는데 return Vector3.Lerp(Vector3.zero, cohesionDirection, cohesionDirection.magnitude / neighborDistance); 하는건 목적에 맞지 않는
리듬 게임 랭킹 시스템 구현에 대한 고민
튜터님의 추천대로 랭킹 시스템의 정렬에 퀵 정렬 알고리즘을 적용했다.위 코드는 내가 랭킹 시스템에 사용한 퀵 정렬이다.하지만 하나의 문제점을 찾았다. 바로 Pivot값과 같은 요소가 존재할 때 Partition함수의 While문을 벗어나지 못한다는 것이다.중복 요소로
곡 이름마다 유저 이름, 점수 를 저장하려고 하였다.유저 이름과 점수는 하나의 클래스(RankingEntry)로 묶어두었음.곡 이름을 키로, RankingEntry 리스트를 밸류로 하여 랭킹 정보를 딕셔너리 데이터로 Json에 저장하고자 하였다.유니티에서 제공하는 Js
오늘은 겪은 문제 중에 가장 큰 것은 깃허브 충돌로 인한 관리 문제이지만..분석하고 정리하는 것에 무리가 있어서 기능 구현에 대한 것만 써보겠다.처음에는 자식에 있는 것을 활성화 시켜서 바로 자식의 함수를 호출하려고 했다.근데 왠걸 자식으로 붙인 오브젝트의 함수는 호출
심화 주차의 팀 프로젝트가 잘(?) 마무리됐다.이번에 나는 랭킹 시스템을 맡아서 제작했다.간단히 끝내고 다른 작업을 찾아서 할 생각이었지만 정렬과 데이터 저장 방식에 대해서 신경써야할 것이 많았고, 해결하는 과정에서 배운 것도 많았던 것 같다.그리고 팀장으로서 일정
드디어 최종 프로젝트 시작이다.우리 조는 이전부터 마음 맞는 사람끼리 모여, 팀장님이 키를 잡고 대략적인 그림을 그려왔다.우리가 만들 게임은 3D / 탄막 / 슈팅 / 메카 !!벌써 기대된다.. 재미 없는 게임이 나올지라도 정말 뿌듯할 것 같다.오늘은 각자가 맡은
새로운 FSM 설계 기법을 공부하고, FSM 구조를 잡는 고민만 하다가 하루가 간 것 같다. 급하면 안되지만,, 그래도 너무 더디다..일단 생각난 것 적어보면배경은 넓지 않은 한정된 공간(아마 엄폐물도 없을듯)이다.거리에 상관 없이 항상 플레이어를 공격 한다. \->
잡몹 FSM 구조 피그마에 제대로 만들어서 여기 캡쳐해놓기 FSM 베이스 코드 후에 만들었던 자세한 내용 말고 굵직한 내용의 코드만 슈퍼 - 서브 - 서브(of 서브) 개념도
NavMesh A*알고리즘이나 다른 AI 길찾기 알고리즘을 공부해서 쓰면 프로토타입이 지연될 것 같아서 공부한 FSM 구조와 NvaMesh를 같이 사용해보기로 했다. 설치 적용 SetDestination 정지 거리 세팅 간단한 결과물 gif
트러블 슈팅 목표 지점만 쳐다보는 문제 NavMeshAgent는 다른 지점을 SetDestination을 하면 그 지점으로 자연스럽게 회전을 한다. 적이 도망을 가거나 다른 지점을 향할 때 항상 플레이어를 쳐다보게 하려는 의도랑 맞지 않았다. NavMeshAgent
개발 범위 타협 후 개발 사격은 Stanoff 상태에만 사격 범위 그렸던 그래프 다른데서 그려서 올리기 사격 범위를 추격 중에도 가능하고, 도망치면서도 가능하게 하려 했지만, 그냥 대치 상태일 때만 사격하도록 했다. 결과물 이리저리 헤메다가 줄일거 줄이고 나온 결과물
구현한 내용 주말 간에 보스부터 간단하게 만들기로 결정이 나서 어제부터 구상하고 오늘은 개발을 좀 진행했다. 플레이어 추적 이동 오늘은 일단 플레이어를 추적하는 공중 유닛을 만들었다. 일단 플레이어를 따라갈 때 일정한 고도가 조정되도록 만들었다. 이를 위해서 모든
고민한 내용 오늘은 예기치 못하게 모의면접 일정이 잡혀서 답변 준비하느라 개발 구상만 잔뜩?하고 코딩은 하나도 못했다. 근데 튜터님 일정 문제로 모의면접 진행이 내일로 미뤄졌다...ㅎㅎ 이게뭐람 페이즈 변환 기준 현재 보스의 전체 체력 중에 N%이하로 내려가면 페이즈2
공중 보스 이동 완성 공중 보스의 이동은 처음에 position 자체를 이동시키는 방식으로 진행했다. 자연스러운 움직임을 위해서 Lerp로 이동 값을 조정해줬지만 원하는 움직임이 나오지 않았다. 그래서 보스의 강체에 힘을 가해서 움직이는 방식으로 변경하였다. 이동
절차적 애니메이션은 필수 요소는 아니지만 꼭 익히고 싶은 기술이기도 하고, 현재 프로젝트의 퀄리티 향상에도 도움이 될 것이라고 생각한다.오늘은 정말 조금만 했다.머리 회전 전체 코드도마뱀의 머리를 제한된 각도 내에서 회전시킨다.회전 속도는 구면 선형 보간을 사용했다.특
오늘의 결과물 드디어 길찾기 알고리즘으로 구체의 이동을 구현했다. 허허 ㅠㅠ 사실 구현은 유튜브의 A* 알고리즘 영상이 다 했고, 알고리즘을 구체의 움직임으로 변환하는 것에 시간이 많이 걸렸다. 길을 찾는 알고리즘은 기존의 A-star와 동일하다. 맵 전체의 2차원
클래스 상속에는 결합력이 강해지는 문제가 있다. 나도 지금 이 문제를 겪었다. 유닛의 상태를 변경할 때 쓰이는 BaseStateProvider를 자식에게 상속시키려함. 상속을 시키다보니 어떤 자식은 [A,B,C]메서드를 사용하고 다른 자식은 [A,B]만 사용하는 경우가
오늘은 특별히 기록해야할 문제는 없었어서 무엇을 했는지 기록해본다. Spider 스테이트 작업은 다 함. state마다 거리 측정이 있어서 transform 가져오는건 base로 옮길 필요 있다고 봄 상태끼리 전환될 때 하위 상태의 Exit이 호출되지 않음 => B
이상한 곳에 스폰이 돼서 스폰 지점 탐지 중 다른 맵이 소환됐을 때에도 노란 포인트가 그대로 쓰이는 것을 확인 공중에 떠있는 노란 점이 문제인 것임 다른 맵에서 찍힌 스폰 지점이 사라지지 않음 기존 스폰 포인트 전부 비워줌 > 해결 스테이트 머신에 reset
특별히 한 것은 없으니 지금까지의 것을 되돌아본다. 한 마디로 겸손함과 기본기 단련이 부족했던 부트캠프였다. 아직 끝나진 않았지만 2주 남았으면 다 한 것이지. 현재 내가 할 수 있는 능력 안에서 최선을 다해야 했는데,, 그러지 못했다. 내 레벨과 부족한 점을 파
개발한 내용 Ball 폭발 데미지 기능 볼의 데미지 -> Physics.SphereCastAll을 호출해서 볼 주변에 닿는 요소를 체크하고 주변의 몹들과 플레이어에게 데미지를 준다. 이 외에는 기록하기에는 너무 애매한 것들이라 생략! 개발 중 겪었던 문제 스택 오버
쓰기 애매하게 개발한거 스파이더 총구 x축 회전 추가 스폰 위치 디텍트 하고 y값 4정도 더 주기 보스 머즐이랑 패턴 테스트 보스 상태 머신 재조정 / 2계층 -> 3계층 기존 A-D / C-P1-P2 => A-D / NC-C / C P1-P2 Ball에 날라가는
Ball 터질 때 총알도 같이 날려버려서 Entity 컴포넌트 가진 애들만 날려주도록 로직 수정 미니언들의 인식 범위 확장 기존 -> 100 롱스톤 현상 '강'이 만든 스폰 에너미는 섞은 스폰 포인트를 가지고 한번에 모든 에너미 소환 바뀐 방식과 적합하지 않음 스
주황색 경계선이 있는 구조물의 레이어가 Unwalkable인데도 스폰 포인트로 찍힘 레이어 체크에서 Ground만 부딪혔을 경우에 스폰 포인트로 설정 이제 위 사진과는 다르게 땅 혹은 Ground 레이어를 가진 구조물에만 스폰 포인트가 설정된다.
Drone 공중에 떠서 움직이지도, 죽지도 않음 문제 Ball이 아무런 행동도 취하지 않음 이유 처음에 코드를 간편하게 만든다고 Initialize (생성자에서 호출되는)에서 초기 상태로 들어가는 것을 호출하지 않았다. 해결 다시 코드를 추가해주니 정상으로 돌아왔음
피드백 내용 반영하기 몹 전체 해당 지정된 스폰장소에서 로봇, 공모양 몹은 그 자리에 스폰되어 움직이지 않기 때문에 일정이상 쌓일 경우 스폰 자체가 안 됨 (드론은 공중에서 이동하여 가능) => GetSpawnPoint 수정 볼 해당 사항 플레이어가 언덕 위에 있을
유튜브에 간단한 절차적 애니메이션이 있길래 개념만 보고 직접 구현해보는 느낌으로 따라해본다.
Angle Constraint 각도 제한 머리가 한없이 뒤로 돌아서 몸을 뚫고 나간다면 생물이라고 볼 수 없을 것이다. 그래서 종속되는 신체가 머리의 특정한 z축 각도의 범위 안에 존재하도록 제한해주어야 한다. 간단히 그림으로 풀어보면 아래와 같다. 몸통이 머리
총기 발사 애니메이션에 이벤트를 생성했고 투사체를 생성하는 OnShoot메서드를 등록해줬다.그런데 아래와 같은 빨간 로그가 떴다.Failed to call AnimationEvent OnShoot of class PlayerInputs.The function must