Notice
Recent Posts
Recent Comments
Link
관리 메뉴

λͺ©λ‘μ „체 κΈ€ (1096)

KoreanFoodie's Study

C++ DevNote : νŒŒμƒ ν΄λž˜μŠ€μ—μ„œ 기반 클래슀 μƒμ„±μž μ œλŒ€λ‘œ ν˜ΈμΆœν•˜κΈ°

C++ 에 λŒ€ν•΄ κ³΅λΆ€ν•œ 것과, κ°œλ°œν•˜λ©΄μ„œ μ•Œκ²Œ 된 것듀을 λ‹€λ£Ήλ‹ˆλ‹€ νŒŒμƒ ν΄λž˜μŠ€μ—μ„œμ˜ 기반 클래슀 μƒμ„±μž 호좜 사싀 νŒŒμƒ ν΄λž˜μŠ€κ°€ 생성될 λ•Œ, 기반 클래슀 μƒμ„±μžκ°€ ν˜ΈμΆœλœλ‹€λŠ” 건, C++ 을 μ‘°κΈˆμ΄λΌλ„ ν•΄ λ³Έ μ‚¬λžŒμ€ λˆ„κ΅¬λ‚˜ μ•Œκ³  μžˆλŠ” 사싀이닀. λ˜ν•œ ν•¨μˆ˜μ˜ μƒμ„±μž/μ†Œλ©Έμžμ˜ 호좜 μˆœμ„œκ°€ λ‹€μŒκ³Ό κ°™λ‹€λŠ” 것도, 읡히 μ•Œλ €μ§„ 사싀이닀. 즉, A ν΄λž˜μŠ€κ°€ 기반 클래슀이고, B ν΄λž˜μŠ€κ°€ νŒŒμƒ 클래슀라고 κ°€μ •ν–ˆμ„ λ•Œ B 클래슀 λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄ 호좜 μˆœμ„œκ°€ λ‹€μŒκ³Ό 같이 λ‚˜μ˜¬ 것이닀 : A 클래슀 μƒμ„±μž B 클래슀 μƒμ„±μž B 클래슀 μ†Œλ©Έμž A 클래슀 μ†Œλ©Έμž ν•˜μ§€λ§Œ ν•œ 가지 κΈ°μ–΅ν•΄μ•Ό ν•  것은, νŒŒμƒ 클래슀λ₯Ό λ§Œλ“€ λ•Œ ν˜ΈμΆœλ˜λŠ” 기반 클래슀 μƒμ„±μžλŠ” 'μΈμžκ°€ μ—†λŠ” 기반 클래슀의 μƒμ„±μž' 이닀. 즉, 인자λ₯Ό λ°›λŠ” ν˜•μ‹μ˜ 기반 클..

Tutorials/C++ : Expert 2022. 12. 27. 16:52
C++ DevNote : μš°μΈ‘κ°’κ³Ό μ’ŒμΈ‘κ°’ μ™„λ²½ 정리 (glvalue, rvalue, lvalue, xrvalue, prvalue)

C++ 에 λŒ€ν•΄ κ³΅λΆ€ν•œ 것과, κ°œλ°œν•˜λ©΄μ„œ μ•Œκ²Œ 된 것듀을 λ‹€λ£Ήλ‹ˆλ‹€ μš°μΈ‘κ°’κ³Ό μ’ŒμΈ‘κ°’ μš°λ¦¬λŠ” C++03 κΉŒμ§€, μš°λ¦¬λŠ” μš°μΈ‘κ°’κ³Ό μ’ŒμΈ‘κ°’ 두 κ°€μ§€μ˜ κ°œλ…μ„ μ‚¬μš©ν•˜μ—¬ 코딩을 ν–ˆμ—ˆλ‹€. κ°„λ‹¨νžˆ λ§ν•˜μžλ©΄, μ’ŒμΈ‘κ°’μ€ 'μ‹μ˜ μ’ŒμΈ‘μ— μžˆλŠ” λ³€μˆ˜'λ₯Ό, μš°μΈ‘κ°’μ€ 'μ‹μ˜ μš°μΈ‘μ— μžˆλŠ” κ°’'을 μ˜λ―Έν–ˆλ‹€. // a λŠ” μ’ŒμΈ‘κ°’, 5 λŠ” μš°μΈ‘κ°’μ΄λ‹€ int a = 5; ν”νžˆλ“€ μ’ŒμΈ‘κ°’μ„ '이름이 μžˆλŠ” 녀석'으둜 μΈμ‹ν•˜κΈ°λ„ ν–ˆλ‹€. μ—„λ°€νžˆ λ§ν•˜λ©΄ ν‹€λ¦° 말은 μ•„λ‹ˆλ‹€. 그런데 move semantics κ°€ λ„μž…λ˜κΈ° μ‹œμž‘ν•˜λ©΄μ„œ, C++11 λΆ€ν„° λŒ€κ²©λ³€μ΄ μ‹œμž‘λ˜λŠ”λ°... μ—¬κΈ°μ„œ λ§Žμ€ μ‚¬λžŒλ“€μ΄ μ’ŒμΈ‘κ°’κ³Ό μš°μΈ‘κ°’μ— λŒ€ν•œ κ°œλ…μ„ ν—·κ°ˆλ €ν•˜κΈ° μ‹œμž‘ν•œλ‹€(ν•„μž 포함). move semantics κ°€ 뭔지 잘 λͺ¨λ₯΄κ² λ‹€λ©΄, 이전 κΈ€(기초, μ‘μš©, 심화)을 κΌ­ 읽고 였자..

Tutorials/C++ : Expert 2022. 12. 26. 17:28
C++ DevNote : const_cast 의 κ°œλ…κ³Ό 주의점

C++ 에 λŒ€ν•΄ κ³΅λΆ€ν•œ 것과, κ°œλ°œν•˜λ©΄μ„œ μ•Œκ²Œ 된 것듀을 λ‹€λ£Ήλ‹ˆλ‹€ const_cast λ§Žμ€ μ‚¬λžŒλ“€μ΄ μ•Œκ³  μžˆλ“―μ΄, C++ μ—μ„œ μ œκ³΅ν•˜λŠ” casting 의 μ’…λ₯˜λŠ” 크게 4 가지이닀. 각 μš©λ„λ₯Ό κ°„λ‹¨νžˆ 적어보면 λ‹€μŒκ³Ό κ°™λ‹€ : static_cast : '일반적인' C μŠ€νƒ€μΌμ˜ μΊμŠ€νŒ…. 보톡 μ—…μΊμŠ€νŒ…(νŒŒμƒ 클래슀의 포인터λ₯Ό 기반 클래슀의 ν¬μΈν„°λ‘œ 가리킴) μ‹œ μ‚¬μš©ν•œλ‹€. dynamic_cast : 상속 관계에 μžˆλŠ” ν΄λž˜μŠ€λ“€ μ‚¬μ΄μ˜ μΊμŠ€νŒ…. 보톡 λ‹€μš΄ μΊμŠ€νŒ…(기반 클래슀의 포인터λ₯Ό νŒŒμƒ 클래슀의 ν¬μΈν„°λ‘œ 가리킴) μ‹œ μ‚¬μš©ν•œλ‹€. λ§Œμ•½ μ‹€νŒ¨ν•˜λ©΄ nullptr λ₯Ό λ¦¬ν„΄ν•œλ‹€. 참고둜, dynamic_cast λŠ” polymorphic ν•œ 클래슀만 κ°€λŠ₯ν•œλ°, κ°„λ‹¨νžˆ λ§ν•˜λ©΄ virtual ν•¨μˆ˜κ°€ ν¬ν•¨λœ ν΄λž˜μŠ€μ΄μ–΄μ•Ό dynam..

Tutorials/C++ : Expert 2022. 12. 26. 14:11
[언리얼] Slate(슬레이트)의 ꡬ쑰와 μ² ν•™ (곡식 λ¬Έμ„œ ν•΄μ„€ 및 정리)

슬레이트 ꡬ쑰 (μ•„ν‚€ν…μ²˜) 사싀 μ–Έλ¦¬μ–Όμ—λŠ” 이미 UMG λΌλŠ”, 맀우 νŽΈλ¦¬ν•œ μœ„μ ― κ΄€λ ¨ 툴이 μ‘΄μž¬ν•œλ‹€. ν•˜μ§€λ§Œ μ½”λ“œλ‘œ UI λ₯Ό μ»¨νŠΈλ‘€ν•  수 μžˆλ‹€λŠ” μž₯점 λ•Œλ¬Έμ—, μ‹€μ œλ‘œ λ§Žμ€ κ³³μ—μ„œ 슬레이트(Slate) λ₯Ό ν™œμš©ν•˜κ³  μžˆλ‹€. μŠ¬λ ˆμ΄νŠΈλŠ” μ–΄λ–€ 녀석이고, μ–΄λ–»κ²Œ λ””μžμΈλ˜μ–΄ μžˆλŠ”μ§€, 곡식 λ¬Έμ„œ(λ²ˆμ—­λ³Έ)λ₯Ό 톡해 λ¨Όμ € κ°„λ‹¨ν•˜κ²Œ 짚고 λ„˜μ–΄κ°€λ„λ‘ ν•˜μž! 이번 κΈ€μ—μ„œλŠ” μŠ¬λ ˆμ΄νŠΈκ°€ μΆ”κ΅¬ν•˜λŠ” λ°©ν–₯κ³Ό 철학에 λŒ€ν•΄ 닀룬닀. 일단, 에디터 μΈν„°νŽ˜μ΄μŠ€μ˜ λŒ€λΆ€λΆ„μ€ 슬레이트둜 μ œμž‘λ˜μ–΄ μžˆλ‹€. Contents Browser 뿐만 μ•„λ‹ˆλΌ λΈ”λ£¨ν”„λ¦°νŠΈ 에디터, μ• λ‹ˆλ©”μ΄μ…˜ 에디터 λ“± 엔진 μΈν„°νŽ˜μ΄μŠ€μ˜ λŒ€λΆ€λΆ„μ„ μ°¨μ§€ν•˜κ³  μžˆλ‹€. μŠ¬λ ˆμ΄νŠΈλŠ” λ‹€μŒκ³Ό 같은 접근법을 μ‚¬μš©ν•œλ‹€ : (뢈투λͺ… μΊμ‹œμ™€ 쀑볡 μŠ€ν…Œμ΄νŠΈλ₯Ό ν”Όν•˜κΈ° μœ„ν•΄. μ „ν†΅μ μœΌλ‘œ UI λŠ” μŠ€ν…Œμ΄νŠΈλ₯Ό ..

Game Dev/Unreal C++ : Dev Log 2022. 12. 7. 16:29
[언리얼] μ–Έλ¦¬μ–Όμ—μ„œ 더티 ν”Œλž˜κ·Έ(Dirty Flag) νŒ¨ν„΄ μ‚¬μš©ν•˜κΈ°

더티 ν”Œλž˜κ·Έ νŒ¨ν„΄μ΄λž€? 더티 ν”Œλž˜κ·Έ νŒ¨ν„΄μ— λŒ€ν•΄μ„œλŠ”, 이전 λΈ”λ‘œκ·Έ κΈ€μ—μ„œ κ°„λ‹¨ν•˜κ²Œ μ–ΈκΈ‰ν•œ λ°” μžˆλ‹€. 더티 ν”Œλž˜κ·Έ νŒ¨ν„΄μ€ 일반적으둜 λ Œλ”λ§ κ³Όμ •μ—μ„œ, 계측 ꡬ쑰가 μ‘΄μž¬ν•  경우, ν•„μš”ν•  λ•Œ / ν•„μš”ν•œ 타이밍에 화면을 κ°±μ‹ ν•˜λŠ” λΆ€λΆ„μ—μ„œ 자주 쓰인닀. λ˜ν•œ 더티 ν”Œλž˜κ·Έλ₯Ό 체크해 UI λ₯Ό κ°±μ‹ ν•˜κ²Œ 되면, Tick λ§ˆλ‹€ UI μ—…λ°μ΄νŠΈκ°€ μ€‘λ³΅ν•΄μ„œ μΌμ–΄λ‚˜λŠ” 것을 막을 수 μžˆλ‹€. κ·Έλ ‡λ‹€λ©΄ 이 νŒ¨ν„΄μ„ μ–Έλ¦¬μ–Όμ—μ„œλŠ” μ–΄λ–€ λ°©μ‹μœΌλ‘œ μ μš©ν•΄ λ³Ό 수 μžˆμ„κΉŒ? 예λ₯Ό λ“€μ–΄, μš°λ¦¬κ°€ μ–΄λ–€ UI λ₯Ό κ°±μ‹  ν•˜λŠ”λ°,Dirty Flag λ₯Ό 두어 ν•΄λ‹Ή 더티 ν”Œλž˜κ·Έκ°€ 켜져 μžˆμ„ λ•Œλ§Œ UI λ₯Ό κ°±μ‹ ν•œλ‹€κ³  κ°€μ •ν•΄ 보자. 일단, μ‹€μ œλ‘œ UI 클래슀λ₯Ό λ§Œλ“€κΈ° 전에, 더티 ν”Œλž˜κ·Έ νŒ¨ν„΄μ„ μ‚¬μš©ν•  μœ„μ ―λ“€μ΄ κ³΅ν†΅μ μœΌλ‘œ μ‚¬μš©ν•  μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ‹€μŒκ³Ό 같이 μ •μ˜ν•  수..

Game Dev/Unreal C++ : Dev Log 2022. 12. 1. 18:09
[언리얼] μœ„μ ― λ¦¬ν”Œλ ‰ν„° - 언리얼 μœ„μ ― 디버깅

μœ„μ ― λ¦¬ν”Œλ ‰ν„° μ–Έλ¦¬μ–Όμ˜ μœ„μ ― λ¦¬ν”Œλ ‰ν„° κΈ°λŠ₯을 μ΄μš©ν•˜λ©΄, ν˜„μž¬ ν”Œλ ˆμ΄ν•˜κ³  μžˆλŠ” μ°½μ—μ„œ μ–΄λ–€ μœ„μ ―μ΄ μ–΄λ–€ λΈ”λ£¨ν”„λ¦°νŠΈλ₯Ό μ‚¬μš©ν•˜κ³  μžˆλŠ”μ§€, visibility μƒνƒœλŠ” μ–΄λ– ν•œμ§€ 등을 ν•œλˆˆμ— νŒŒμ•…ν•  수 μžˆλ‹€(μœ„μ ― λ¦¬ν”Œλ ‰ν„° : μ°½ > 개발자 툴 > μœ„μ ― λ¦¬ν”Œλ ‰ν„°). 더 μžμ„Έν•œ 사항은 μ΄λ“μš°λ‹˜ λΈ”λ‘œκ·Έμ˜ 에디터 ν™•μž₯ 기초 글을 μ°Έκ³ ν•˜μž. μœ„μ˜ 히트 ν…ŒμŠ€νŠΈ κ°€λŠ₯ μœ„μ ―μ„ λˆ„λ₯΄λ©΄, λ‹€μŒκ³Ό 같이 ν”Œλ ˆμ΄ ν™”λ©΄κ³Ό μœ„μ ― λ¦¬ν”Œλ ‰ν„° 창이 λ°”λ€ŒλŠ” 것을 확인할 수 μžˆλ‹€(μ΄λ―Έμ§€λŠ” 곡식 λ¬Έμ„œμ—μ„œ κ°€μ Έμ˜΄) ν•΄λ‹Ή μœ„μ ―μ˜ 계측 ꡬ쑰λ₯Ό νŒŒμ•…ν•  수 있으며, μ‹€μ‹œκ°„μœΌλ‘œ μœ„μ ―μ„ 끄고 킬 μˆ˜λ„ μžˆμ–΄ μœ„μ ― κ΄€λ ¨ 디버깅에 맀우 μœ μš©ν•œ κΈ°λŠ₯이닀!

Game Dev/Unreal C++ : Study 2022. 11. 16. 19:53
Boost.Asio 의 κ°œλ… 및 μš”μ•½ 정리

Asio λŠ” Asynchronous IO 의 μ•½μžμ΄λ‹€. Asio λ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ”, λ‹€μŒκ³Ό 같은 μš©μ–΄λ“€μ„ μ•Œκ³  μžˆμ–΄μ•Ό ν•œλ‹€. IO Service 클래슀 : μ»€λ„μ—μ„œ λ°œμƒν•œ μž…μΆœλ ₯ 이벀트λ₯Ό λ””μŠ€νŒ¨μΉ˜ ν•΄μ£ΌλŠ” κΈ°λŠ₯을 μˆ˜ν–‰. λ””μŠ€νŒ¨μΉ˜λž€, μš°μ„ μˆœμœ„κ°€ 높은 μž‘μ—…μ΄ μš°μ„ μ μœΌλ‘œ μˆ˜ν–‰λ  수 μžˆλ„λ‘ μ‹œμŠ€ν…œ μžμ›μ„ ν• λ‹Ήν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€. IO Service ν΄λž˜μŠ€λŠ” μ»€λ„μ—μ„œ λ°œμƒν•œ λ„€νŠΈμ›Œν¬μƒμ˜ 접속 및 데이터 처리 이벀트λ₯Ό μ²˜λ¦¬ν•œλ‹€. 쒅단점(Endpoint) : λ„€νŠΈμ›Œν¬ μƒμ˜ νŠΉμ • μ»΄ν“¨ν„°μ—μ„œ μ‹€ν–‰λ˜κ³  μžˆλŠ” ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨. ꡬ체적으둜 IP μ£Όμ†Œμ™€ 포트 번호의 ν•œ μŒμ„ 쒅단점이라고 함. DNS(Domain Name Server) : Boost Asio μ—μ„œλŠ” 도메인 μ£Όμ†Œλ₯Ό 이용, IP μ£Όμ†Œλ₯Ό μ•Œμ•„λ‚΄μ–΄ 쒅단점을 κ΅¬ν•œλ‹€. ..

Game Dev/Game Server 2022. 11. 1. 14:09
κ²Œμž„ μˆ˜ν•™ - λ³€ν™˜ ν–‰λ ¬μ˜ μ—­ν–‰λ ¬

μ΄λ“μš°λ‹˜μ˜ 'μ΄λ“μš°μ˜ κ²Œμž„μˆ˜ν•™' 책을 보며 쒋은 λ‚΄μš©μ„ μ •λ¦¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 더 μžμ„Έν•œ λ‚΄μš©μ΄ κΆκΈˆν•˜μ‹œλ‹€λ©΄, 책을 ꡬ맀해 직접 μ½μ–΄λ³΄μ‹œκΈ°λ₯Ό μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! λ³€ν™˜ ν–‰λ ¬μ˜ μ—­ν–‰λ ¬ λ‹€μ–‘ν•œ λ³€ν™˜ ν–‰λ ¬λ“€μ˜ 역행렬을 μ•Œμ•„λ³΄μž. 크기 λ³€ν™˜ν–‰λ ¬ 각 κΈ°μ €λ²‘ν„°μ˜ 크기λ₯Ό 각각 a, b 만큼 ν‚€μš°λŠ” 크기 λ³€ν™˜ν–‰λ ¬μ˜ 역행렬은 λ‹€μŒκ³Ό κ°™λ‹€. 전단 λ³€ν™˜ν–‰λ ¬ ν‰ν–‰μ‚¬λ³€ν˜• 처럼 λ―Έλ„λŸ¬μ§€κ²Œ 생긴 전단 λ³€ν™˜ν–‰λ ¬μ˜ 역행렬은 λ‹€μŒκ³Ό κ°™λ‹€. νšŒμ „ λ³€ν™˜ν–‰λ ¬ νšŒμ „ λ³€ν™˜ν–‰λ ¬μ˜ 역행렬은 λ‹€μŒκ³Ό κ°™λ‹€. ΞΈ 만큼 λ°˜μ‹œκ³„ λ°©ν–₯으둜 νšŒμ „μ‹œν‚€λŠ” ν–‰λ ¬μ˜ 역행렬을 κ΅¬ν•˜κΈ° μœ„ν•΄μ„œλŠ”, -ΞΈ 만큼 λ°˜μ‹œκ³„ λ°©ν–₯으둜 νšŒμ „μ‹œν‚€λŠ” 행렬을 생각해보면 λœλ‹€! μ‚Όκ°ν•¨μˆ˜μ˜ μ„±μ§ˆμ„ μ΄μš©ν•˜λ©΄ κ°„λ‹¨νžˆ ꡬ할 수 μžˆλ‹€.

Game Dev/Game Math 2022. 10. 29. 09:47