Notice
Recent Posts
Recent Comments
Link
관리 메뉴

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

KoreanFoodie's Study

[C++ κ²Œμž„ μ„œλ²„] 3-2. μ†ŒμΌ“ ν”„λ‘œκ·Έλž˜λ° 기초 #2

[C++ κ²Œμž„ μ„œλ²„] 3-2. μ†ŒμΌ“ ν”„λ‘œκ·Έλž˜λ° 기초 #2 핡심 : 1. μ†ŒμΌ“ ν”„λ‘œκ·Έλž˜λ° μ…‹μ—…μ—λŠ” μ—¬λŸ¬ API 듀을 ν†΅ν•œ μ„ΈνŒ…μ΄ ν•„μš”ν•˜λ‹€. ν•˜μ§€λ§Œ λ„ˆλ¬΄ 겁먹지 말고, νλ¦„λ§Œ μ΄ν•΄ν•˜μž. 2. ν΄λΌμ΄μ–ΈνŠΈ μͺ½μ—μ„œλŠ” ν•Έλ“œν° κ΅¬μž…(clientμ†ŒμΌ“ μ„ΈνŒ…)κ³Ό κ°€κ²Œμ˜ μœ„μΉ˜μ™€ 번호(μ„œλ²„ IP μ£Όμ†Œμ™€ 포트)λ₯Ό μ•Œμ•„λ‚Έ ν›„, μ—°κ²°(::connect)을 μ‹œλ„ν•˜κΈ°λ§Œ ν•˜λ©΄ λœλ‹€. 3. μ„œλ²„ μͺ½μ—μ„œλŠ” ν•Έλ“œν° κ΅¬μž…(listen μ†ŒμΌ“ μ„ΈνŒ…) ν›„, κ°€κ²Œμ˜ μœ„μΉ˜μ™€ 번호(μ„œλ²„ IP μ£Όμ†Œμ™€ 포트)λ₯Ό μ„€μ •ν•œ ν›„, μ•ˆλ‚΄μ›μ˜ 폰을 κ°œν†΅(μ†ŒμΌ“κ³Ό μ„œλ²„ μ£Όμ†Œ ::bind)ν•˜κ³  μ˜μ—…μ„ μ‹œμž‘(::listen)ν•˜λ©΄ λœλ‹€. 이제 μ €λ²ˆμ— μ΄μ•ΌκΈ°ν–ˆλ˜ κ°œλ…μ„ λ°”νƒ•μœΌλ‘œ, μ‹€μ œ μ½”λ“œλ₯Ό 보자. μ•„λ§ˆ μ΅μˆ™μΉ˜ μ•Šμ€ μ½”λ“œκ°€ μž”λœ© λ“±μž₯을 ν•˜κ²Œ 될 텐데, ν•˜λ‚˜ν•˜λ‚˜ μ „λΆ€ μ•Œμ•„μ•Ό ν•œλ‹€..

Game Dev/Game Server 2023. 9. 20. 23:42
[C++ κ²Œμž„ μ„œλ²„] 3-1. μ†ŒμΌ“ ν”„λ‘œκ·Έλž˜λ° 기초 #1

[C++ κ²Œμž„ μ„œλ²„] 3-1. μ†ŒμΌ“ ν”„λ‘œκ·Έλž˜λ° 기초 #1 핡심 : 1. μ†ŒμΌ“ ν”„λ‘œκ·Έλž˜λ°μ„ 고객(ν΄λΌμ΄μ–ΈνŠΈ)와 κ°€κ²Œ(μ„œλ²„) 관계에 λΉ„μœ ν•˜μ—¬ κ°œλ…μ„ 이해해 λ‘μž. λ“œλ””μ–΄ κΈ°λ‚˜κΈ΄ Memory κ΄€λ ¨ ν¬μŠ€νŒ…μ„ 마치고, 이제 λ„€νŠΈμ›Œν¬ ν”„λ‘œκ·Έλž˜λ°μœΌλ‘œ λ“€μ–΄κ°„λ‹€. λ¨Όμ € μ†ŒμΌ“ ν”„λ‘œκ·Έλž˜λ°μ„ 본격적으둜 μ‹œμž‘ν•˜κΈ° 전에, κ°„λ‹¨ν•œ κ°œλ…μ„ 짚고 λ„˜μ–΄κ°€ 보자. 참고둜, μ΄ν•΄μ—λŠ” μ˜ˆμ‹œκ°€ μ΅œκ³ λ‹€. λ¨Όμ €, μš°λ¦¬κ°€ 쀑ꡭ집에 μ „ν™”λ₯Ό ν•œλ‹€κ³  ν•΄ 보자. 그런데 이 쀑ꡭ집은 유λͺ…ν•˜κ³  큰 곳이라, μ „ν™”λ₯Ό λ°›λŠ” μ•ˆλ‚΄ μš”μ›μ΄ λ”°λ‘œ μ‘΄μž¬ν•œλ‹€. μš°λ¦¬λŠ” 쀑ꡭ집에 λ“±λ‘λœ λŒ€ν‘œ μ „ν™”λ‘œ μ „ν™”λ₯Ό κ±Έκ³ , μš©κ±΄μ„ μ „λ‹¬ν•œλ‹€. 그러면 μ•ˆλ‚΄μ›μ€ μš©κ±΄μ— λ§žλŠ” μž‘μ—…μžμ˜ 번호λ₯Ό μ•Œλ €μ€€λ‹€. 그럼 이제 λ‹€μŒλΆ€ν„°λŠ” λŒ€ν‘œ μ „ν™”λ₯Ό 톡해 쀑ꡭ집에 연락할 ν•„μš” 없이, ν…Œμ΄λΈ”μ— 앉아 μžˆλŠ” μž‘μ—…..

Game Dev/Game Server 2023. 9. 19. 17:48
[C++ κ²Œμž„ μ„œλ²„] 2-9. Object Pool

[C++ κ²Œμž„ μ„œλ²„] 2-9. Object Pool 핡심 : 1. ObjectPool 을 μ‚¬μš©ν•˜λ©΄, 각 νƒ€μž…λ³„λ‘œ 풀을 λ§Œλ“€κ²Œ λ˜μ–΄, λ©”λͺ¨λ¦¬ μ˜€μ—Ό μ΄μŠˆκ°€ λ°œμƒν–ˆμ„ λ•Œ 문제의 원인을 νŒŒμ•…ν•˜κΈ°κ°€ μ‰¬μ›Œμ§„λ‹€. 2. μ»€μŠ€ν…€ν•œ μ‚­μ œμžλ₯Ό 객체 λ©”λͺ¨λ¦¬λ₯Ό 풀에 λ°˜λ‚©ν•˜λŠ” ν˜•μ‹μ„ 넣은 MakeShared λ₯Ό ν™œμš©ν•˜λ©΄, ObjectPool 을 μ‚¬μš©ν•˜λŠ” 슀마트 포인터λ₯Ό μ‰½κ²Œ λ§Œλ“€ 수 μžˆλ‹€. 3. Allocator λ₯Ό StompAllocator 둜 μ‰½κ²Œ ꡐ체할 수 μžˆλ„λ‘ #define 문법을 μ‚¬μš©ν•˜λ©΄, ν…ŒμŠ€νŠΈμš©μœΌλ‘œ StompAllocator λ₯Ό μ‰½κ²Œ 적용 κ°€λŠ₯ν•˜λ‹€. μš°λ¦¬λŠ” μ΄μ „κΉŒμ§€ λ©”λͺ¨λ¦¬ 풀에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜λŠ”λ°, λ©”λͺ¨λ¦¬ 풀은 λ©”λͺ¨λ¦¬ 크기에 따라 객체듀이 μ•Œμ•„μ„œ 풀을 같이 μ‚¬μš©ν•œλ‹€. 집단 μƒν™œμ΄ 으레 κ·Έλ ‡λ“―, κΈ°μˆ™μ‚¬ μƒν™œμ—μ„œλ„ 문제..

Game Dev/Game Server 2023. 9. 15. 11:39
C++ DevNote : μƒμ„±μžλ₯Ό private ν•˜κ²Œ λ§Œλ“œλŠ” 이유 (feat. make_shared λŒ€μ‹  new λ₯Ό μ‚¬μš©ν•œλ‹€κ³ ?)

C++ 에 λŒ€ν•΄ κ³΅λΆ€ν•œ 것과, κ°œλ°œν•˜λ©΄μ„œ μ•Œκ²Œ 된 것듀을 λ‹€λ£Ήλ‹ˆλ‹€ μƒμ„±μžλ₯Ό private ν•˜κ²Œ λ§Œλ“ λ‹€κ³ ? 슀마트 포인터에 λ°°μš°λ‹€ 보면, make_shared 와 new λ₯Ό μ΄μš©ν•΄ 슀마트 포인터λ₯Ό λ§Œλ“œλŠ” 방식에 λŒ€ν•΄ 배우게 λœλ‹€. μ΄λ•Œ, νš¨μœ¨μ„±μ„ μœ„ν•΄ make_shared λ₯Ό new 보닀 μ„ ν˜Έν•˜λΌλŠ” 말을 λ“£κ²Œ λ˜λŠ”λ°, κ·Έ μ΄μœ λŠ” λͺ…ν™•ν•˜λ‹€(νž™ 할당이 2번 λŒ€μ‹  1번 이루어지며, 같은 λ©”λͺ¨λ¦¬ 쑰각에 λ†“μ΄λŠ” 데닀가, new μ—μ„œ μ˜ˆμ™Έκ°€ λ°œμƒν–ˆμ„ λ•Œμ˜ λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ„ 막을 수 μžˆμœΌλ‹ˆκΉŒ). 그런데... κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  new λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 경우λ₯Ό 보면, 크게 2가지 μ΄μœ κ°€ λ‚˜μ˜¨λ‹€. μ»€μŠ€ν…€ μ‚­μ œμžλ₯Ό μ‚¬μš©ν•˜λŠ” 경우 μƒμ„±μžκ°€ private 인 경우 100번 μ–‘λ³΄ν•΄μ„œ, 1λ²ˆμ€ κ·Έλ ‡λ‹€ 쳐도, 2λ²ˆμ€ μ§κ΄€μ μœΌλ‘œ 와닿지가 ..

Tutorials/C++ : Expert 2023. 9. 14. 19:31
[C++ κ²Œμž„ μ„œλ²„] 2-6. λ©”λͺ¨λ¦¬ ν’€ #1

[C++ κ²Œμž„ μ„œλ²„] 2-6. λ©”λͺ¨λ¦¬ ν’€ #1 핡심 : 1. λ©”λͺ¨λ¦¬ 풀을 μ΄μš©ν•˜λ©΄, λ©”λͺ¨λ¦¬ νŒŒνŽΈν™”λ₯Ό ν”„λ‘œκ·Έλž˜λ° λ ˆλ²¨μ—μ„œ μ–΄λŠ 정도 ν•΄μ†Œν•¨μœΌλ‘œμ¨ λ©”λͺ¨λ¦¬λ₯Ό μ’€ 더 효율적으둜 μ‚¬μš©ν•  수 μžˆλ‹€. 2. 할당에 ν•„μš”ν•œ λ©”λͺ¨λ¦¬ 쑰각의 크기에 따라 λ©”λͺ¨λ¦¬ 풀을 각각 λ§Œλ“€μ–΄ μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ 있고, 같은 μ‚¬μ΄μ¦ˆλ§Œ μ‚¬μš©ν•˜λŠ” λ©”λͺ¨λ¦¬ 풀을 ν™œμš©ν•  μˆ˜λ„ μžˆλ‹€. 3. λ©€ν‹° μ“°λ ˆλ“œ ν™˜κ²½μ—μ„œ λ©”λͺ¨λ¦¬ 풀을 ν™œμš©ν•œλ‹€λ©΄, ν’€ μ ‘κ·Ό μ‹œ Lock 을 잘 μž‘μ•„μ£Όλ„λ‘ ν•˜μž. 였브젝트 풀링은 μ•„μ£Ό.. 였래된 μœ μ„œ κΉŠμ€ 기법이닀. μ£Ό λͺ©μ μ€ λ©”λͺ¨λ¦¬ νŒŒνŽΈν™”λ₯Ό μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•΄ ν”„λ‘œκ·Έλž˜λ° λ ˆλ²¨μ—μ„œ λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 κ΄€λ¦¬ν•˜κΈ° μœ„ν•¨μΈλ°, 사싀 μ£Ό 골격은 κ°„λ‹¨ν•˜λ‹€. λ©”λͺ¨λ¦¬ 쑰각을 담을 'ν’€'을 λ§Œλ“€κ³ , λ©”λͺ¨λ¦¬κ°€ ν•„μš”ν•  λ•Œ μƒˆλ‘­κ²Œ λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν•˜κ³ , ν• λ‹Ήν•œ λ©”..

Game Dev/Game Server 2023. 9. 11. 17:25
[언리얼] UI μ—μ„œ μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ΄λ²€νŠΈκ°€ λλ‚¬μŒμ„ μ•Œλ €μ£ΌλŠ” 방법

[언리얼] UI μ—μ„œ μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ΄λ²€νŠΈκ°€ λλ‚¬μŒμ„ μ•Œλ €μ£ΌλŠ” 방법 핡심 : 1. UI 에 μ‚½μž…λœ μ• λ‹ˆλ©”μ΄μ…˜μ—μ„œ 이벀트λ₯Ό μΆ”κ°€ν•˜κ³ , κ·Έλž˜ν”„μ—μ„œ μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ ν˜ΈμΆœν•  ν•¨μˆ˜λ₯Ό C++ μ—μ„œ κ²€μƒ‰ν•΄μ„œ μ—°κ²°ν•΄ μ£Όλ©΄ λœλ‹€. 가끔 그런 κ²½μš°κ°€ μžˆλ‹€. μ½”λ“œλ‘œ ν’€μ–΄μ•Ό ν•˜λŠ” λ™μž‘κ³Ό μ—°μΆœμ„ ν•¨κ»˜ μ‚¬μš©ν•΄μ•Ό ν• λ•Œ, νŠΉμ • λ™μž‘μ„ μ—°μΆœμ΄ λλ‚˜λŠ” 타이밍에 μ˜μ‘΄ν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€. λŒ€ν‘œμ μœΌλ‘œ μ• λ‹ˆλ©”μ΄μ…˜μ΄ μžˆλŠ”λ°, μ• λ‹ˆλ©”μ΄μ…˜μ΄ μ™„μ „νžˆ λλ‚˜κ±°λ‚˜, νŠΉμ • μ‹œμ μ— 왔을 λ•Œ μ½”λ“œμ—μ„œ νŠΉμ • λ™μž‘μ„ μˆ˜ν–‰ν•˜λ„λ‘ λ§Œλ“€μ–΄μ•Ό ν•˜λŠ” μΌ€μ΄μŠ€κ°€ μ™•μ™• 생기곀 ν•œλ‹€. 보톡 μŠ€ν‚¬ μͺ½ κ΅¬ν˜„μ„ ν•˜λ‹€λ³΄λ©΄, Notify 같은 κ±Έ λ§Œλ“€μ–΄μ„œ 이λ₯Ό ν•΄κ²°ν•˜κΈ°λ„ ν•˜μ§€λ§Œ.. UI 의 κ²½μš°μ—λŠ”, 이벀트 트리거λ₯Ό 톡해 이λ₯Ό ν•΄κ²°ν•  수 μžˆλ‹€. 이제 μ˜ˆμ‹œλ₯Ό 보자. 일단 μ›ν•˜λŠ” UI λ₯Ό ..

Game Dev/Unreal C++ : Dev Log 2023. 9. 8. 19:15