๐Ÿ“š Tech

    [C++] RTTI(Run Time Type Information)

    RTTI(Run Time Type Information) C++์—์„œ๋Š” ๋Ÿฐํƒ€์ž„์— ๊ธฐ์ดˆ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด ํฌ์ธํ„ฐ๊ฐ€ ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š”์ง€ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ๋Š” RTTI ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ์—์„  ํด๋ž˜์Šค ๊ฐ„ ์ƒ์†์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ , ๋‹คํ˜•์„ฑ์„ ๊ฐ€์ง€๊ฒŒ ๋˜์–ด ๊ธฐ์ดˆ ํด๋ž˜์Šค๋Š” ์ž์‹ ์˜ ๋ฉค๋ฒ„๋ฅผ ์œ„์ž„ํ•œ ํŒŒ์ƒ ํด๋ž˜์Šค๋ฅผ ์ž์‹ ์˜ ๊ฐ์ฒด ํฌ์ธํ„ฐ๋กœ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. Base *pBase = new Derived(); ์ปดํŒŒ์ผ ๋‹น์‹œ์—๋Š” pBase๊ฐ€ ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค. ๊ทธ์ € ๊ธฐ์ดˆ ํด๋ž˜์Šค์™€ ํŒŒ์ƒ ํด๋ž˜์Šค ์ค‘ ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š”์ง€ ์ง์ž‘๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด RTTI์ด๊ณ  ํ˜„์žฌ ๊ฐ์ฒด ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๊ฐ์ฒด ํƒ€์ž… ์ •๋ณด๋ฅผ type_info๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ vftable์— ์ €์žฅํ•œ๋‹ค. 1. dyna..

    [Unreal][C++] Pawn ํด๋ž˜์Šค

    [Unreal][C++] Pawn ํด๋ž˜์Šค

    Pawn ํด๋ž˜์ŠคPawn ํด๋ž˜์Šค๋Š” ํ”Œ๋ ˆ์ด์–ด๋‚˜ AI์˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์ œ์–ด๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.  1) ์ดˆ๊ธฐํ™”์ƒ์„ฑํ•œ Pawn ํด๋ž˜์Šค์— ๊ฒŒ์ž„์ด ์‹œ์ž‘๋˜์—ˆ์„ ๋•Œ ํ”Œ๋ ˆ์ด์–ด์˜ ์ž…๋ ฅ์— ๋ฐ˜์‘ํ•˜๋„๋ก ์„ค์ •ํ•  ๊ฒƒ์ด๋‹ค.AutoPossessPlayer: ๋ ˆ๋ฒจ์ด ์‹œ์ž‘๋˜๊ฑฐ๋‚˜ ํฐ์ด ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ ์ž๋™์œผ๋กœ ํฐ์„ ์†Œ์œ ํ•ด์•ผ ํ•˜๋Š” ํ”Œ๋ ˆ์ด์–ด ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.AMyPawn::AMyPawn(){ // Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; AutoPossessPlayer = EAu..

    [Unreal][C++] ํƒ€์ด๋จธ

    1. ํƒ€์ด๋จธํƒ€์ด๋จธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ์‹œ๊ฐ„๋งˆ๋‹ค ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๋™์ž‘์ด ์‹คํ–‰๋˜๋„๋ก ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ Tick ํ•จ์ˆ˜์—์„œ DeltaTime ๊ฐ’์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€์ •ํ•œ ๋™์ž‘์ด ์ง€์†์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ , ํŠน์ •ํ•œ ์‹œ๊ฐ„์—๋งŒ ๋ช‡ ๋ฒˆ ์‹คํ–‰๋˜๊ฑฐ๋‚˜, ํ…€์ด 1์ดˆ๋ฅผ ๋„˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด Tick ํ•จ์ˆ˜๋ณด๋‹ค ํƒ€์ด๋จธ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 2. ํƒ€์ด๋จธ ๊ด€๋ฆฌํƒ€์ด๋จธ๋Š” ๊ธ€๋กœ๋ฒŒ TimerManager์—์„œ ๊ด€๋ฆฌํ•˜๋ฉฐ ๊ฒŒ์ž„ ์ธ์Šคํ„ด์Šค ์˜ค๋ธŒ์ ํŠธ์™€ ๊ฐ ์›”๋“œ์— ์กด์žฌํ•œ๋‹ค. TimerManager๋ฅผ ํ†ตํ•ด ํƒ€์ด๋จธ๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 1) ์‚ฌ์šฉSetTimer ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋”œ๋ ˆ์ด ํ›„ ํ•จ์ˆ˜๋‚˜ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํƒ€์ด๋จธ๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ทธ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ๋ฌดํ•œ ๋ฐ˜๋ณตํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.GetWorldTimerManager().SetTi..

    ๋จธํ„ฐ๋ฆฌ์–ผ(Material)

    ๋จธํ„ฐ๋ฆฌ์–ผ(Material)

    1. Material ๋จธํ„ฐ๋ฆฌ์–ผ์ด๋ž€ ์˜ค๋ธŒ์ ํŠธ์™€ ๋งต์— ์›ํ•˜๋Š” ๋ชจ์–‘์ƒˆ๋ฅผ ๋‚ด๋Š” ๋ฐ ์žˆ์–ด ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ…์Šค์ณ์— ๋Œ€ํ•œ ํ‘œ๋ฉด ๋ Œ๋”๋ง ๋ฐฉ๋ฒ•์˜ ์ •์˜์ด๋‹ค. 2. Material Parameter ๊ธฐ๋ณธ ํ…์Šค์ณ ์ด๋ฏธ์ง€(Albedo, Base Color)๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋‹จ์ˆœํ•œ ์ด๋ฏธ์ง€๋งŒ์„ ๋…ธ์ถœํ•˜์ง€๋งŒ, ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊ฑฐ์˜ ๋ชจ๋“  ํ˜„์‹ค ์„ธ๊ณ„ ํ‘œ๋ฉด์˜ ์™ธ์–‘์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 1) Metallic ํ‘œ๋ฉด์˜ ๋ฐ˜์‚ฌ๋„ ๋ฐ ๊ด‘์› ๋ฐ˜์‘์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋”ฐ๋ผ ํ‘œ๋ฉด์ด ์–ผ๋งˆ๋‚˜ ๊ธˆ์† ๊ฐ™์€์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. 2) Normal ๊ด‘์›์„ ๋ฐ›๋Š” ๋ฒ”ํ”„, ํ™ˆ ๋ฐ ์Šคํฌ๋ž˜์น˜ ๋“ฑ์˜ ํ‘œ๋ฉด ๋””ํ…Œ์ผ์„ ๋ชจ๋ธ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‹ค์ œ ๋ชจ๋ธ๋ง์œผ๋กœ ํ™ˆ๊ณผ ๋‚˜์‚ฌ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋…ธ๋ฉ€ ๋งต์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ์‹ค์ œ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋กœ ๋ชจ..

    [Git] Git README, .gitignore ํŒŒ์ผ

    [Git] Git README, .gitignore ํŒŒ์ผ

    Git Repositories๋ฅผ ๋งŒ๋“ค ๋•Œ, README ํŒŒ์ผ๊ณผ .gitignore ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. README ํŒŒ์ผ README ํŒŒ์ผ์€ ํ”„๋กœ์ ํŠธ์™€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์ฑ…์˜ ํ‘œ์ง€์™€ ๊ฐ™์€ ๋ฌธ์„œ์ด๋‹ค. ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ, ์‚ฌ์šฉํ•œ ๊ธฐ์ˆ , ํ™œ์šฉ ๋ฐฉ๋ฒ• ๋“ฑ์„ ๊ธฐ๋กํ•œ๋‹ค. ํŒŒ์ผ์˜ ํ™•์žฅ์ž๋Š” md๋กœ ๋งˆํฌ๋‹ค์šด(Markdown)์˜ ์•ฝ์ž์ด๋‹ค. https://coding-factory.tistory.com/620 [Git] GitHub README ์ž‘์„ฑ๋ฒ• (๋งˆํฌ๋‹ค์šด, ์ด๋ฏธ์ง€, Gif, ์ฝ”๋“œ ๋ธ”๋ก ์‚ฌ์šฉ๋ฒ•) ๋ฆฌ๋“œ๋ฏธ(README)๋ž€? README๋Š” ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ๊ธ€์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋””๋ ‰ํ† ๋ฆฌ๋‚˜ ์••์ถ• ํŒŒ์ผ์— ํฌํ•จ๋œ ๊ธฐํƒ€ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด์™€ coding-factory..

    [C++] ํŽธ์ง‘ ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Edit Distance Algorithm)

    [C++] ํŽธ์ง‘ ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Edit Distance Algorithm)

    ํŽธ์ง‘ ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1. ๊ฐœ๋… ํŽธ์ง‘ ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Edit Distance Algorithm)์€ ๋‘ ๊ฐœ์˜ ๋ฌธ์ž์—ด A, B๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋‘ ๋ฌธ์ž์—ด์ด ์–ผ๋งˆ๋‚˜ ์œ ์‚ฌํ•œ ์ง€๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ฆ‰, ๋ฌธ์ž์—ด A๊ฐ€ ๋ฌธ์ž์—ด B์™€ ๊ฐ™์•„์ง€๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช‡ ๋ฒˆ์˜ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ์˜ ์—ฐ์‚ฐ์ด๋ž€ ์‚ฝ์ž…(Insertion), ์‚ฝ์ž…(Deletion), ๋Œ€์ฒด(Replacement)๋ฅผ ๋งํ•œ๋‹ค. ๋ฌธ์ž์—ด ๊ฐ„์˜ ์œ ์‚ฌ๋„ ์ธก์ •์ฒ˜๋Ÿผ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋‘ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์˜ ์œ ์‚ฌ๋„๋ฅผ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํŠนํžˆ ํ”„๋กœ๊ทธ๋žจ์˜ ํ‘œ์ ˆ ์—ฌ๋ถ€, ์ฒ ์ž ์˜ค๋ฅ˜ ๊ฒ€์‚ฌ ๋“ฑ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ๊ธฐ๋ณธ ์›๋ฆฌ 3. ๋ฌธ์ œ https://leetcode.com/problems/edit-distance/description/ Edit D..