Giter Club home page Giter Club logo

rpgsimulator's Introduction

RpgSimulator

스마일게이트 직무체험 인턴에서 진행한 프로젝트로 개인 프로젝트인 FindArk의 문제점을 개선하고 실제 게임과 유사한 전투 시나리오를 구현했습니다. 해당 프로젝트는 스마일게이트 홀딩스의 지적 자산으로 허용된 범위 안에서 코드를 공개합니다.

프로젝트 개요

  1. 프로젝트 기간: 2023. 07. 03 ~ 2023. 08. 25

  1. 개발 도구 및 개발 환경:

  1. 참여 인원: 1인

  2. 프로젝트 개요

    • Unreal Engine 5(5.0.3), C++(80%) & Blueprint(20%) 구현
    • RPG 게임의 보스 레이드 콘텐츠 구현
    • 플레이어 캐릭터(4개), 보스 몬스터(1개), 공격 스킬(각 8개), 몬스터의 BT 인공지능 구현 (Blueprint)
    • 위젯 구현
    • Deep Learning 학습에 필요한 feature 선정 및 구조화
    • Deep Learning 학습에 필요한 기능(Headless, 가속화, Config 파싱 등) 구현

프로젝트 세부 내용

1. 캐릭터 구현

  • BaseCharacter 클래스(C++)에서 공통 기능을 구현한 후 Blueprint로 상속해 세부 사항 구현
  • 공격 스킬은 모션에 맞춰 발동되도록 Anim Montage에 AnimNotify를 추가하고 Notify에서 캐릭터의 데미지 전달 함수를 호출하도록 구현

2. 컴포넌트 구현

  • 각 플레이어 캐릭터와 보스 몬스터가 공용으로 사용할 수 있도록 스탯, 스킬, 상태, 전투, 기믹을 관리하는 Actor Component 단위로 구현
  • 새로운 캐릭터 또는 보스 몬스터를 만들거나 다른 유형의 Actor에서 사용할 수 있도록 기능 분리
  • StatComponent: 각 캐릭터와 보스 몬스터의 스탯(HP, 공격력, 크리티컬 확률 등) 관리
  • AbilityComponent: 각 캐릭터와 보스 몬스터가 사용하는 스킬 관리
  • StatusComponent: 각 캐릭터와 보스 몬스터의 상태(행동, CC, 버프 등) 관리
  • CombatComponent: 각 캐릭터와 보스 몬스터의 전투(데미지 전달) 관리
  • GimmickComponent: 보스 몬스터가 각 페이즈마다 사용하는 기믹 관리

3. 보스 몬스터 및 BT 기반 AI 구현

  • BaseCharacter 클래스(C++)에서 공통 기능을 구현한 후 Blueprint로 상속해 세부 사항 구현
  • BT를 사용하여 전투 시나리오가 가능한 AI 기능 구현 (Blueprint)
  • 보스의 기본 스킬 4개와 기믹에 사용되는 특수 스킬 3개 구현


4. 게임 시스템 구현

  • Game Instance 구현 (C++)

    • 게임을 실행할 때, 캐릭터, 보스 몬스터, 게임 규칙 등 필요한 정보를 JSON & CSV 파일에서 파싱
    • 파싱된 데이터는 구조체로 관리
  • Game Mode 구현 (C++)

    • 게임이 시작될 때, 캐릭터, 보스 몬스터, 게임 규칙을 Game Instance에서 파싱한 JSON & CSV 데이터를 사용해 초기화
    • 게임의 제한 시간, 리셋, 종료 등을 관리
  • Player Controller 구현 (C++)

    • 키보드 & 마우스의 입력 처리 구현

5. 시뮬레이션 기능 구현

  • Deep Learning 학습에서 매 시뮬레이션마다 파라미터를 수정할 수 있도록 JSON & CSV 데이터 파싱 구현 (Blueprint)
  • Deep Learning 학습에는 렌더링이 필요없으므로 Headless 기능 구현
  • 시뮬레이션에 소요되는 물리적 시간을 단축하기 위해 가속화 기능 구현

시연 영상

레이드 시나리오 기믹 video (Youtube)

rpgsimulator's People

Contributors

tab4space avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.