전체 글 359

마크 모딩) 26.02.03

if (roll "공의 개수"로 이해하기 (눈금자 원리)RAND.nextFloat()는 0.0부터 1.0 사이의 숫자를 무작위로 뽑습니다. 이걸 0부터 100까지 있는 1미터짜리 자라고 생각해보세요.0cm ~ 4cm 구간 (길이 4): 여기에 화살이 꽂히면 TIER 1입니다. (확률 4%)4cm ~ 7cm 구간 (길이 3): 여기에 화살이 꽂히면 TIER 2입니다. (확률 3%)7cm ~ 9cm 구간 (길이 2): 여기에 화살이 꽂히면 TIER 3입니다. (확률 2%)9cm ~ 10cm 구간 (길이 1): 여기에 화살이 꽂히면 TIER 4입니다. (확률 1%)10cm ~ 100cm 구간 (길이 90): 나머지입니다. (확률 90%)결국 각 티어가 차지하는 **"영역의 넓이"**가 곧 확률이 되는 것입니다..

마크 모딩) 26.1.31

타겟팅 ai vs 반격aivs 좀비인지 확인하는 ai(즉 법사가 공격대상 찾을때타겟팅 AI registerGoals 적을 검색할 때 아군은 필터링해서 제외함 시력 필터 (아군은 안 보임)반격 AI ZombieAlly...Goal 아군이 날 때려도 보복하지 않음 인내심 (친구면 참음)데미지 핸들러 AllyDamageHandler 혹시라도 맞았을 때 피가 깎이지 않게 함 방탄복 (맞아도 안 아픔)생성자 (public ZombieAllyAware...) vs canUse()의 차이생성자 (super(mob)): 이건 단순히 "이 AI는 이 좀비가 사용할 거야"라고 등록만 하는 단계입니다. (준비 단계)canUse(): 마인크래프트 엔진은 매 순간(매 틱마다) 좀비에게 물어봅니다. "너 지금 이 ..

마크 모딩) brutal boss처럼

https://youtu.be/gGlZW8TXfSg 1. 시스템 개요일반 적대적 몹을 확률적으로 '보스'로 변환시키고, 전투를 통해 실시간으로 성장(레벨업)하며 무작위 특수 능력을 얻는 RPG형 보스 시스템을 구축했습니다.2. 데이터 저장 및 관리 (Capability & NBT)전용 배낭(Capability) 장착: 모든 생명체 엔티티에게 레벨, 티어, 킬수, 배운 능력을 저장할 수 있는 우리 모드 전용 데이터 공간을 부여했습니다.스킬 데이터 구조 변경: 처음에는 단순히 배운 스킬 리스트(List)만 저장했으나, 스킬별 레벨업 기능을 위해 '스킬 이름:레벨' 쌍으로 저장하는 맵(Map) 구조로 확장했습니다.영구 저장: 게임을 껐다 켜도 보스의 성장 상태와 배운 스킬들이 사라지지 않도록 NBT..

하스+전장) 하수인 공격하면 돌격하도록/영웅 피0이하 게임 승리/소리추가

📌 공격하고 되돌아옴[ 완료 ]이미 필드에 잇는 하수인을 한번 클릭하면 화살표가 나오게 하고싶은데, 그리고 목적지를 선택하면 그곳으로 돌진햇다가, 원래 자리로 돌아오는,아마 draw관련 움직이는 스크립트 추가한것처럼 스크립트 추가하면 되나 하스스톤처럼 하수인이 대상을 향해 돌진(Dash)했다가 원래 자리로 돌아오는 연출을 추가하려면, MinionAttack.cs의 ExecuteAttack 부분을 코루틴(Coroutine) 기반으로 수정해야 합니다.또한, 공격하는 동안 하수인이 부모(필드의 LayoutGroup)에서 빠져나와도 자리가 유지되도록 Placeholder(빈 칸 생성) 로직이 포함되어야 합니다. "피해를 1씩만 입음" 같은 특수 효과는 어떻게 구현하나요?이런 종류의 효과(피해 감..

하스+전장) 제네틱 vs 명시적 형 변환 차이: 조건문

자바의 instanceof나 예전 방식의 형변환을 쓰면 **"이게 그거 맞니?"**라고 일일이 물어보고 확인하는 과정이 필요한데, 제네틱은 그 과정을 획기적으로 줄여주면서 안전까지 보장합니다.말씀하신 '1000마리의 포켓몬' 비유를 들어서 왜 제네틱이 압승인지 정리해 드릴게요.1. 예전 방식 (확인하고 + 변환하고)만약 제네틱이 없다면, 1000마리의 포켓몬 중에서 '피카츄'를 찾아 공격시키려면 코드가 이렇게 되어야 합니다.// 1. 이게 피카츄인지 확인 (instanceof 같은 역할)if (child.gameObject.tag == "Pikachu") { // 2. 피카츄가 맞다면 강제 형변환 (에러 위험 감수) Pikachu p = (Pikachu)child.GetComponent(typ..

하스+전장)minionAttack.cs/turnManager.cs 해석

📂목차Part 1. [UI 및 수학] 화살표가 마우스를 따라가는 원리벡터의 뺄셈: 마우스 방향을 향하는 화살표 벡터 구하기Mathf.Atan2와 라디안: 좌표를 각도(Degree)로 변환하는 마법Z축 회전과 쿼터니언: 2D UI 회전의 핵심 원리Canvas Scaler 보정: 해상도가 바뀌어도 화살표 길이가 정확한 이유 (lossyScale)sizeDelta 활용: 이미지 두께는 유지하고 길이만 늘리는 법Part 2. [입력 시스템] 클릭 이벤트와 공격 시퀀스Input ID 0, 1, 2: 마우스 왼쪽, 오른쪽, 휠 버튼의 구분OnPointerClick vs Update: 클릭 시점과 매 프레임 감시의 역할 분담가드 절(Guard Clause): 공격 불가능한 상황을 입구에서 컷(Cut)하기UI 레이캐..

컴 구조)6,7,8장

6-11. RAM의 기본 특성• 휘발성 저장장치: RAM(Random Access Memory)은 전원이 꺼지면 저장된 내용이 모두 사라지는 휘발성(volatile) 저장장치입니다.• 보조기억장치와의 차이: 하드디스크(HDD), SSD, USB와 같은 보조기억장치는 전원이 꺼져도 내용이 유지되는 비휘발성(non-volatile) 장치입니다,.• 역할: CPU는 실행할 프로그램의 명령어와 데이터를 RAM에서 가져와 실행하며, RAM은 실행할 대상을 저장하고 보조기억장치는 보관할 대상을 저장하는 역할을 합니다,.2. RAM의 용량과 성능의 관계램의 용량은 컴퓨터의 성능, 특히 다중 작업(멀티태스킹) 능력에 중요한 영향을 미칩니다,. 이를 이해하기 위해 **'책상(RAM)'과 '책장(보조기억장치)'**의 비유..

하스+전장)하수인 로직 강화

📌 공격취소되엇다면, 다시 공격할수잇도록[ 완료 ] 아군 클릭하면 어케 되지 [ 완료 ]조건문으로 타겟이 isally인지 확인중(같은 필드라면 아군)부모가 playerfield라면 지금 canceltarget이라는 함수의 역할이 중의적이라서 헷갈리는것같아가령 공격 하고 나서 화샆요 없어져도 canceltarget을 호출하고, 공격실패해도 cancel target을 호출하니깐, 함수 하나 만들어서, 공격못함:이면 canceltarget()과 isattackable=tru로 해야할듯 그리고 함수이름을 화살표 표시>로 바꾸는것도 📌 근데 왜 canAttack,isTargeting 변수 두개나 잇지, 아 첫턴에 공격못해서타겟팅이랑 공격은, 다르니깐 ㅇ 영웅 피도 까이고있는 모습 📌 [ 완료 ..

하스+전장) draggable .cs, carddraw.cs 해석

[ ]카드 내려고했다가 취소되면 원래 손패위치로 되돌아가게 📖 목차1부. 카드 드래그의 기본 원리 (CardDraggable)유니티 이벤트 시스템과 인터페이스: IBeginDragHandler 등 'I'로 시작하는 약속들MonoBehaviour의 역할: 클래스 상속과 컴포넌트의 이해위치 기억 장치: originalParent와 parentToReturnTo로 구현하는 귀환 로직드래그의 시작과 끝: 카드가 필드로 나갔다 다시 손패로 돌아오는 과정2부. 자연스러운 손패 연출을 위한 가짜 칸 (Placeholder)빈 공간의 마법: 왜 카드가 빠져나가도 옆 카드들이 휙 쏠리지 않는가?공간 확보 전문가 LayoutElement: 투명하지만 존재감 있는 가짜 카드의 비밀실시간 이사 로직: 손패와 필드 사이..

컴 구조)1,2,3,4,5장

상대 주소는 "지금부터 몇 칸 더" (주로 점프용)베이스 레지스터는 "기준점(시작점)부터 몇 칸 더" (주로 데이터 접근용) 다음 실행할 명령어 주소를 담는 프로그램 카운터(PC), 해석할 명령어를 담는 명령어 레지스터(IR), 메모리 주소를 담는 메모리 주소 레지스터(MAR) 1. 즉시 주소 지정 방식 (Immediate Addressing)데이터를 메모리에서 찾아오는 것이 아니라, 명령어 안에 실제 데이터(값)를 바로 넣어두는 방식입니다.특징: 메모리에 갈 필요가 없어 속도가 가장 빠릅니다.장점: 아주 빠름 (연산 코드 옆에 데이터가 붙어 있음).단점: 명령어의 크기가 제한되어 있어 아주 큰 숫자는 넣을 수 없습니다.유효주소: 없음 (데이터 자체가 명령어에 포함됨).2. 직접 주소 지정 방식 ..