ToyProject

    [언리얼엔진 5] 0. Preparatory

    1학년 2학기를 마치고 PaperZd 플러그인을 주로 사용해 토이프로젝트를 방학기간동한 진행했다. 기획을 너무 크게 잡은 것도 있고 c++의 이해도 낮아 상속이나 인터페이스, 델리게이트와 같은 언리얼c++에서 제공하는 기능을 많이 사용하지 못했다. 전반적으로 프로젝트가 난잡하고 유지보수가 불가능할정도로 클래스끼리의 종속성이 강했다. 이번 토이프로젝트의 목표는 클래스간 종속성을 최소화시킬 것이다. 유지보수를 쉽게 만들기 위해 인터페이스나 오버라이딩을 주로 사용하고 여러 기능을 구현해볼 수 있는 3D Topdown 퍼즐게임을 만들어 볼 것이다. 인프런에서 언리얼c++과 언리얼 게임 프레임워크의 이해를 수강하고 토이프로젝트를 진행하였다. 1. 기획 플레이어는 탑다운 시점에서 캐릭터를 조종할 수 있고 다양한 액..

    [언리얼엔진 5] 32. Wrap Up

    2022년 12월 말부터 토이프로젝트를 시작하여 3월초까지 약 2달간 진행했다. 개강 후 토이프로젝트를 늘어지게 가져가면 이도저도 아닐 것같아 빠르게 프로젝트를 마무리 짓기로 결정했고 32차 wrap up으로 RedCaped 토이프로젝트를 마무리한다. 가장 재미있던 개발 https://boobiebird.tistory.com/37 여러 강의영상을 보며 다양한 게임을 "따라서" 만들어보았지만 혼자 이렇다할 개발을 해본적이 없다. 그렇게 외부강의 없이 홀로 프로젝트를 무작정 시작해보았다. 역시 많은 런타임에러가 생기거나, 머티리얼이 깨지는 등 난관이 존재했지만 레딧이나 공식docs에서 정보를 찾으며 해결해갔다. 이러한 점에 이번 토이프로젝트가 의미가 있었다고 생각한다. 아래는 토이프로젝트 컨셉샷을 끝으로 글..

    [언리얼엔진 5] 31. Enemy mass produce

    기본적인 Enemy 클래스 구현이 끝나간다. 이제 상속(Inheritance)가 빛날 시간이다! BP_Skeleton이 기본 몬스터의 부모 클래스이다. 모든 Enemy클래스가 이로부터 상속받아질 것이다. 상속받았기에 함수호출은 물론 BP_Skeleton을 불러도 각각의 객체들이 호출된다! 물론 Sprite에 노멀맵을 Aesprite로 적용시켜주고, 스프라이트를 추출하고, 플립북 생성 후 애님소스에 추가, 애님 블루프린트를 만드는 과정은 어쩔 수 없이 진행해야한다. 하나당 15~20분정도 걸리는 것 같았다. 각 몬스터는 각 고유한 공격 노티파이를 가지기에 공격사거리가 모두 다르다. 공격력, 체력, 이동속도, 방어력등은 쉽게 변경가능하다.

    [언리얼엔진 5] 30. Cooldown Icon

    각 기능에 대한 쿨타임 관리는 이미 끝났지만 쿨타임을 눈으로 볼 수 있는 수단이 필요하다. 언제 재사용이 가능한지, 남은 재사용 시간이 얼마나 남았는지 쉽게 알 수 있어야 한다. 구린 UI좀 손봐야 할 것같다

    [언리얼엔진 5] 29. Zodiac Class (The twelve houses of the Zodiac)

    이전에 쭉 다룬 펫 클래스가 아닌 조디악 즉 황도 12궁 클래스를 구현하였다. 명색이 황도 12궁이기에 12개를 구현해야했다. 하나하나 개발일지에 다루려 했지만 그렇게 된다면 너무나도 많이 다루어야 하기에 하나의 글에 전부 담아보기로 했다. 황도 12궁은 12개의 별자리로 구성된다. 조디악 클래스는 펫클래스처럼 일정 층에 도달하면 얻을 수 있는 힘으로 12개중 램덤하게 얻을 수 있다. 다음은 12궁의 상세설명이다. 모든 조디악 클래스는 하나의 패시브, 액티브 스킬이 존재한다. 양자리 - Aries 패시브 : 활 차징 속도가 증가한다 액티브 : 모든 적을 느리게 만들고 데미지를 준다 황소자리 - Taurus 패시브 : 방패로 적의 공격을 막을 시 해머공격을 한다 액티브 : 전방에 강력한 해머공격을 한다 쌍..

    [언리얼엔진 5] 28. Shield

    개발일지에서 다루지 않았지만 여러가지 파티클을 추가하였다. 특정 층 이상에서 별자리 12궁의 힘을 랜덤으로 받을 수 있다. 아무튼 이번에는 방패를 구현해볼 것이다. 구현 계획 바라본 적이 나를 공격하면 방어한다 방패를 올려도 뒤에서 공격하면 데미지를 받는다 다른 동작중에도 방패를 들수 있다 방패를 드는 동작 중에 공격을 받으면 방어하지 못한다 1초동안 방어하지 않으면 방패를 내린다 끝! 이제 슬슬 구현하고 싶은 것은 큰 문제없이 (구글과 같은 도움없이) 구현할 수 있게 됐다. 1년전 언리얼을 시작했을 때 튜토리얼 동영상 없이 아무것도 못하던 걸 생각하면 대단한 발전인 거 같다.

    [언리얼엔진 5] 27. Fix LevelUP (Inheritance)

    개발일지 17에서 레벨업시 스탯업을 고르는 위젯을 구현하였다. 하지만 여러가지 스탯업을 추가하다보니 너무나도 많은 변경과 수정을 거쳐야 했다. 즉 유지보수가 엉망이었다. 기존 하나의 스탯업을 추가하려면 스트링테이블 3개를 각각 추가해주고 Switch on int노드도 추가해주어야 한다. 이 과정을 3번 반복해주어야 했다. 나중에 더 많이 추가할 수도 있는데 이런 과정이 반복되면 하루종일 노드작업만 할것이다. 그렇기에 유지보수가 좋게 바꾸어줄 필요가 있었다. 변경 후 Inheritance(상속)의 강력함을 깨닫는 순간이다. 이제 스탯업을 추가하려면 자손블루프린트를 만들고 배열에 추가만 해주면 된다. 작업시간이 100배는 빨라진 셈이다. Inheritance(상속)을 이용해서 유지보수가 매우 좋아졌다. 상속..