전체 글 531

소프트웨어 설계 - 요구사항 확인

소프트웨어 설계 - 요구사항 확인현행 시스템 분석 요구사항 분석 1) 요구사항 분석의 개념 요구사항 분석은 고객이나 사용자가 시스템에서 필요로 하는 기능이나 서비스를 이해하고 정의하는 과정이다.이 과정을 통해 시스템이 충족해야 할 요구사항이 명확해진다. 2) 요구사항 분석 프로세스요구사항 수집사용자와 스테이크홀더(이해관계자)로부터 필요한 기능과 조건을 수집한다.이를 위해 인터뷰, 설문조사, 워크숍 등의 방법이 사용된다.사용자가 요구사항 정의 및 검증 과정에 적극적으로 참여하도록 한다. 요구사항 분류수집된 요구사항을 기능 요구사항과 비기능 요구사항으로 구분한다. 구분 설명 기능 요구사항시스템이 수행해야 할 기능들을 정의비기능 요구사항시스템의 성능, 보안, 사용서 등 시스템이 어떻게 동작해야 하는지에..

26년 3월 회고

회사 덕분에 오랜만에 언리얼을 면밀히 들여다보았다.쉐이더 코드부터 차근차근다이나믹 머티리얼 인스턴스를 어떻게 쉐이더 코드와 연관성을 갖고왜 그 연관성을 활용하여 쓰면 좋은지 같은왜? 라는 관점 면밀히 바라볼 수 있는 것을 기준으로 두고,이에 대한 시선에 초점을 맞추어 생각했었다.개인 플젝에서 다이나믹 머티리얼 인스턴스의 특징을 잘 녹여낸 부분을 시작으로에디터 툴까지 적용해보자 한다.현재 개인 플젝 중점은1. FarmSystem을 BP에서 Cpp로 컨버팅 할 것2. BP Widget UI를 Slate Cpp로 컨버팅 할 것3. 쉐이더와 다이나믹 머티리얼 인스턴스 활용에 초점을 맞출 것부가 기능으로는a. 에디터 툴 기능 추가유의 사항으로는 코드에 왜?를 생각하고 짜기.4월은 개인 플젝 Cpp화 & BPwid..

2DRPG 타겟 탐지 기능 - ComBatSystem

https://github.com/kwon1232/RPG_2D GitHub - kwon1232/RPG_2D: RPG_2DRPG_2D. Contribute to kwon1232/RPG_2D development by creating an account on GitHub.github.com 일단 Attack 애니메이션의 어느 부분에 타겟을 인지할 지 정해야 한다.이는 이벤트 트리거 스크립트를 이용하여 AttackTrigger() 함수를 바인딩해준다.public class Entity_AnimationTriggers : MonoBehaviour{ private Entity entity; private Entity_Combat entityCombat; private void Awake() ..

2D RPG - 플레이어를 인식하는 enemy AI

Enemy AI가 플레이어를 인식해야순찰 혹은 IDLE 상태에서 chasing 상태 혹은 attack 상태로 변화할 수 있다.따라서 적군이 플레이어를 인식하는 것은가장 필요한 기초적인 단계이다. 이러한 단계는 다음과 같이 접근할 수 있다. protected virtual void OnDrawGizmos() { Gizmos.DrawLine(groundCheck.position, groundCheck.position + new Vector3(0, -groundCheckDistance)); Gizmos.DrawLine(primaryWallCheck.position, primaryWallCheck.position + new Vector3(wallCheckDistance * ..

몬스터 ai의 ground checking

몬스터의 ground check는 다음과 같은 이유를 비롯하여 필요로 한다. 땅 위에 있는지(낙하/점프/계단) 판단경사/단차/절벽 감지(앞으로 가도 되는지)네비/이동 로직 보정(공중에서 이동 금지, 슬립 방지, 스텝 처리)따라서 오늘은 스켈레톤 클래스에서 ground check를 가능하게 하도록상위 구조의 코드를 변경하였다. 1. 부모 클래스의 코드 수정 아래는 변경 전 코드이다. private void HandleCollisionDetection() { groundDetected = Physics2D.Raycast(transform.position, Vector2.down, groundCheckDistance, whatIsGround); wallDetected = ..

프로그래머스 Lv.2 마법의 엘레베이터

https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr#include #include using namespace std;int solution(int storey) { int answer = 0; while(storey > 0) { int cur = storey % 10; int next = (storey / 10) % 10; if(cur 5) { answer += 10 - cur; ..

프로그래머스 LV.2 튜플

https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr #include #include #include #include using namespace std;bool cmp (pair& a, pair& b){ if(a.second == b.second) return a.first > b.first; return a.second > b.second;}vector solution(string s) { vector answer; map m; string temp = "..

2D RPG - 콤보 공격 만들기

복잡한 상태를 하위 계층 구조로 나누어 관리할 수 있는 sub state machine을 사용하여 콤보 공격을 구현하였다. 콤보 공격에 사용된 sub state machine의 내부 구조는 다음과 같다. 이런식으로 인덱스가 같으면 다음 인덱스로 넘어가게끔 한 것이다. 아래는 콤보 구현 방식 코드이다.using UnityEngine;public class Player_BasicAttackState : EntityState{ private float attackVelocityTimer; private const int FirstComboIndex = 1; private int comboIndex = 1; private int comboLimit = 3; public Player_B..

Unity 2026.01.07

DX - CPU에서 계산된 정보를 GPU로 넘기는 방법

void Game::Update(){ D3D11_MAPPED_SUBRESOURCE subResource; ZeroMemory(&subResource, sizeof(subResource)); _deviceContext->Map(_constantBuffer.Get(), 0, D3D11_MAP_WRITE, 0, &subResource); ::memcpy(subResource.pData, &_transformData, sizeof(_transformData)); _deviceContext->Unmap(_constantBuffer.Get(), 0);} 이 코드가 의미하는 바를 렌더링 파이프라인 관점에서 풀어보면Map / Unmap은 “Central Processing Unit가 쓸 수 있게 잠깐 문 열어주는 것”..

그래픽스/DX11 2025.12.18