๊ธ€

๋ผ๋ฒจ์ด GameDevelopment์ธ ๊ฒŒ์‹œ๋ฌผ ํ‘œ์‹œ

Simple Intersection Tests For Games (์˜์—ญ)

์ด๋ฏธ์ง€
[์›๋ฌธ] http://www.gamasutra.com/view/feature/131790/simple_intersection_tests_for_games.php?page=1  ๋‹น์‹ ์˜ ์ฐจ๊ฐ€ ์‹œ์† 180๋งˆ์ผ๋กœ finish line์„ ํ†ต๊ณผํ•˜๋“ , ์ด์•Œ์ด ๋‹น์‹  ์ ˆ์นœ์˜ ๊ฐ€์Šด์„ ๊ฟฐ๋šซ๋“ , ๋ชจ๋“  ๊ฒŒ์ž„์˜ Object Intersection์—์„œ๋Š” ์ถฉ๋Œํƒ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.  ์ด ๊ธฐ์‚ฌ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ˜•์ƒ(Shape)์— ํ™œ์šฉ๋˜๋Š” ๋ช‡๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ Intersection Test๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. => [Sphere, Box] Sweep Tests for Moving Objects Collision Detection์˜ ๊ฐ€์žฅ ๊ณตํ†ต์ ์ธ ์ ‘๊ทผ๋ฒ•์€  ๋งค Frame์ด ๋๋‚  ๋•Œ, ๋‘ ๋ฌผ์ฒด๊ฐ€ Overlap๋˜๋Š”์ง€๋ฅผ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ด ๋ฐฉ๋ฒ•์ด ๋‘ ๋Œ€์ƒ์ด ์„œ๋กœ ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋ฉด์„œ ๊ต์ฐจํ•  ๋•Œ, ํƒ์ง€ํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.  ์ด ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด, ๋ฌผ์ฒด๋“ค์˜ ๊ถค์ ์„ ์ž‘๊ฒŒ ๋ถ„ํ• ํ•œ ๋‹ค์Œ, ๋งค Point์—์„œ Check ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ ๋ฌผ์ฒด์˜ (Frame ์‚ฌ์ด) ์ด๋™ ๊ฐ„๊ฒฉ์ด ๋„“์„ ๊ฒฝ์šฐ, ๋„ˆ๋ฌด ๋น„์‹ผ ๋น„์šฉ์„ ์ง€๋ถˆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.  ๋ฐ˜๋ฉด์—, Sweep Test๋Š” ํšจ์œจ์ ์œผ๋กœ (๋ฌผ์ฒด๊ฐ€) Overlap๋˜๋Š” ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋Š” Subdivision ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์ตœ์ ์˜ ์‹œ์ž‘์ ์œผ๋กœ ์ด์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. A Sphere-Plane Sweep Test [Figure1. ํ‰๋ฉด์„ ํ†ต๊ณผํ•˜๋Š” ๊ตฌ]  ์œ„์˜ ๊ทธ๋ฆผ์€, ํ‰๋ฉด์„ ๋น ๋ฅด๊ฒŒ ๊ฐ€๋กœ์ง€๋ฅด๋Š” ๊ตฌ์˜ ์˜ˆ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด๋Š” ์  C 0 ๊ฐ€ ํ‰๋ฉด์˜ positive side์—, ์  C 1 ๊ฐ€ negative side์— ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  ์ผ๋ฐ˜์ ์œผ๋กœ, ๊ตฌ๊ฐ€ (Frame์˜ ์–ด๋А ์‹œ์ ์—) ํ‰๋ฉด์„ ๊ฐ€๋กœ์ง€๋ฅผ ๋•Œ, d0 > r ์ด๊ณ  d1 < r ์ž…๋‹ˆ๋‹ค.  (r์€ ๊ตฌ์˜ ๋ฐ˜์ง€๋ฆ„, d0๊ณผ d1์€ ์  ...

(์˜์—ญ) Separating Axis Theorem(SAT) ์„ค๋ช…

์ด๋ฏธ์ง€
[์›๋ฌธ] https://www.sevenson.com.au/actionscript/sat/ Separating Axis Theorem(SAT)๋Š” ๋ณผ๋ก๋‹ค๊ฐํ˜•(convex polygons) ์‚ฌ์ด์˜ ์ถฉ๋Œ์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.  ์ „ ๊ฒฐ์ฝ” ์ „๋ฌธ๊ฐ€๋Š” ์•„๋‹ˆ์ง€๋งŒ, ์ €์—๊ฒŒ Collision Detection์ด ํ•„์š”ํ•ด์ง„ ๋‹ค์Œ๋ถ€ํ„ฐ, ์ €๋Š” ๊ด€๋ จ ์ž๋ฃŒ๋“ค์„ ๋ชจ์•„์™”๊ณ , ๊ฒฐ๊ตญ ์ด๋ฅผ ActionScript 3๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด๋“ค์ด (์ €์™€ ๊ฐ™์ด) ๊ณ ํ†ต์„ ๊ฒช์ง€ ์•Š์•˜์œผ๋ฉด ํ•˜๋Š” ๋งˆ์Œ์—, ์ด๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. Flash์—์„œ Polygon๋“ค ์‚ฌ์ด์˜ ์ถฉ๋Œ๊ณ„์‚ฐ์ด ํ•„์š”ํ•จ์„ ๋А๊ผˆ์„ ๋•Œ๋ถ€ํ„ฐ, ์ €๋Š” ์ผ๋ช… '๋ถ„๋ฆฌ์ถ• ๊ฒ€์‚ฌ ์ด๋ก (SAT)'๋กœ ์•Œ๋ ค์ง„ ์ด ๋ฐฉ๋ฒ•์„ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•œ ๋ฌธ์ œ๋Š”, ์ œ๊ฐ€ ์ด๋ฅผ ์ œ ๊ฒƒ์œผ๋กœ ๋งŒ๋“ค๊ธฐ์œ„ํ•ด ์—„์ฒญ๋‚˜๊ฒŒ ๊ณ ์ƒํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด์ง€์š”. ์•„์ฃผ ๋งŽ์€ Collision Detection ์ž๋ฃŒ๋ฅผ ์ฝ๊ณ , ์ฝ”๋“œ ์ƒ˜ํ”Œ์„ ์กฐ์‚ฌํ•œ ๋’ค์—์•ผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž(?)๋“ค์„ ์œ„ํ•ด, ๋จผ์ € ์ด ์ด๋ก ์˜ ๊ธฐ๋ณธ์ ์ธ ์›๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€๋ฅผ ๊ฐ€๋ณ๊ฒŒ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. The quick rundown ์ผ๋ฐ˜์ ์œผ๋กœ, SAT์˜ ๋ชฉ์ (๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“  Collision Detection ๊ธฐ๋ฒ•) ์˜ ๋ชฉํ‘œ๋Š” ๋‘ Shape ์‚ฌ์ด์— ๊ฐ„๊ฒฉ์ด ์กด์žฌํ•˜๋Š” ์ง€๋ฅผ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.  ์ œ๊ฐ€ ์•„๋Š”, SAT์— ๋Œ€ํ•œ ๊ฐ€์žฅ ์ข‹์€ ๋น„์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. [ ํšƒ๋ถˆ์„ ์ผ  ๋‹ค์Œ, ๋‹น์‹ ์ด ํ…Œ์ŠคํŠธ ํ•˜๋ ค๋Š” ๋‘ Shape๋ฅผ ๋‹ค๋ฅธ ๊ฐ๋„๋กœ ๋น„์ถ˜๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์„ธ์š”.  ์–ด๋–ค ๊ทธ๋ฆผ์ž์˜ ํ˜•ํƒœ๊ฐ€, ๊ทธ ๋‘ Shape ๋ฐ”๋กœ ๋’ค์˜ ๋ฒฝ์— ๋‚˜ํƒ€๋‚ ๊นŒ์š”? ] ๋งŒ์•ฝ ๋‹น์‹ ์ด ๊ทธ Shape๋“ค ์ฃผ์œ„๋ฅผ ๋Œ๋ฉด์„œ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ณ , ๊ทธ ๊ทธ๋ฆผ์ž๋“ค ์‚ฌ์ด์—์„œ ์•„๋ฌด๋Ÿฐ ๊ฐ„๊ฒฉ(gap)์„ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด, ๊ทธ ๋‘ Shape๋Š” ํ‹€๋ฆผ์—†์ด ์ ‘์ด‰ํ•˜๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.  ๋ฐ˜๋Œ€๋กœ ๋งŒ์•ฝ ๊ฐ„๊ฒฉ์„ ์ฐพ๋Š”๋‹ค๋ฉด, ๋ถ„๋ช…ํžˆ ์ ‘์ด‰ํ•˜์ง€ ์•Š์€ ์ƒํƒœ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Programming์˜ ๊ด€์ ์—์„œ, ์ด๋Š” ์–ด~์—„์ฒญ ๋งŽ...

Collision Detecting / Collision Responding

์ผ์ฃผ์ผ ์ด์ƒ, ํ˜ผ์ž ๋จธ๋ฆฌ ์ฅ์–ด์‹ธ๊ณ  ๋™๋™๋Œ€๋˜ Babel์˜ ์œ ๋‹› ๋ณ„ ์ถฉ๋Œ์ฒ˜๋ฆฌ ๋ฌธ์ œ. ์ •ํ˜•ํ™”๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฐพ์•„๋ณด์ง€ ์•Š๊ณ  ํ˜ผ์ž ๋„ˆ๋ฌด ์‚ฝ์งˆํ•œ ๊ฒƒ ๊ฐ™์•„ ์†์ด ์“ฐ๋ฆฌ๋‹ค.. ์—ญ์‹œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋ ค๋ฉด, ๊ณต๋ถ€ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ ๋งŽ์ด ๊ฐœ์„ ์‹œ์ผœ์•ผ ํ•  ๋“ฏ ์‹ถ๋‹ค https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection 2D ์ถฉ๋Œ์ฒ˜๋ฆฌ์— ๊ด€ํ•œ, ์ข‹์€ ํฌ์ŠคํŠธ๊ฐ€ ์ •๋ฆฌ๋œ ๋งํฌ. ํฌ์ŠคํŠธ ํ•˜๋‚˜ ํ•˜๋‚˜์”ฉ ๋ฒˆ์—ญํ•ด๋ด์•ผ๊ฒ ๋‹ค.

ํ•จ์ˆ˜ ํฌ์ธํ„ฐ, std::bind, ๋žŒ๋‹ค์‹๊นŒ์ง€..

Babel ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด ๊ณผ์ •์—์„œ, ๋ฐœ์ƒํ•˜๋Š” Event๋“ค์„ ์ผ๊ด„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ(์ปจํ…Œ์ด๋„ˆ์™€ ๊ด€๋ฆฌ์ž)๋ฅผ  ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋‹ค.  ์˜ˆ๋ฅผ ๋“ค๋ฉด,   - Karma๊ฐ€ ์ผ์ •๋†’์ด์— ๋„๋‹ฌํ–ˆ์„ ์‹œ, ๋ณด์Šค๊ฐ€ ์ž ์‹œ ์ถœํ˜„ํ•ด ๋ฉ”์‹œ์ง€ ๋ช‡๋งˆ๋””๋ฅผ ๋˜์ง€๊ณ  ์‚ฌ๋ผ์ง€๋Š”..  - ์ผ์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ–ˆ์„ ๋•Œ, ํ™”๋ คํ•œ ์ดํŽ™ํŠธ์™€ ํ•จ๊ป˜ ์ˆจ๊ฒจ์ง„ ์•„์ดํ…œ์„ ํš๋“ํ•˜๋Š”.. ๊ณผ ๊ฐ™์€ Plot Event ๋ง์ด๋‹ค.   ๊ตฌํ˜„์„ ์œ„ํ•ด, ์šฐ์„  ์ €์žฅํ•  Event๋ฅผ ์ž๋ฃŒ๋กœ ์ƒ๊ฐํ•  ๋•Œ, ํ•„์š”์กฐ๊ฑด๋“ค์„ ๋ช…ํ™•ํžˆ ํ•  ํ•„์š”๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์—, Event๋ž€ ํ•ด๋‹น 2๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๋Š” ํ”„๋กœ์‹œ์ ธ๋ฅผ ๋งํ•œ๋‹ค.  ์ผ์ •ํ•œ ์ˆœ์„œ(Sequence)๋ฅผ ๊ฐ€์ง€๊ณ , ์—ฐ์†์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ณตํ•ฉ ํ”„๋กœ์‹œ์ ธ  CallBack์˜ ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ํ”„๋กœ์‹œ์ ธ ์œ ์ € ์ž…๋ ฅ์— ๋Œ€ํ•ด, ์ง์ ‘์ด ์•„๋‹Œ ๊ฐ„์ ‘์  ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋ชจ๋“  Manage ํ”„๋กœ์‹œ์ ธ๋ฅผ ๋งํ•œ๋‹ค.  ์ข…๋ฅ˜๋Š”, ์•ก์…˜์ด ๋  ์ˆ˜๋„ ์žˆ๊ณ  ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ, ํŒŒ๋ผ๋ฉ”ํ„ฐ ๋ณ€๊ฒฝ ๋“ฑ ๋ชจ๋“  ์กฐ์ž‘์œผ๋กœ ๋А์Šจํ•œ ๋ฒ”์œ„๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ,  ๋ฌด์—‡๋ณด๋‹ค ์ผ์ •ํ•œ ์‹œํ€€์Šค์— ์˜ํ•ด Event๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋งค๋‹ˆ์ €๊ฐ€ ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (+์ฐธ๊ณ ) -  http://carstart.tistory.com/183

l-value ์™€ r-value์— ๋Œ€ํ•˜์—ฌ

http://blog.naver.com/PostView.nhn?blogId=han95173&logNo=220765490854

Cocos2d-x ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ

Objective-C ๊ธฐ๋ฐ˜์˜ ๋ฉ”๋ชจ๋ฆฌ๋ชจ๋ธ์ธ Reference Counting https://www.programering.com/a/MTN3cjMwATg.html cocos2d-x์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด ์ž˜ ์ •๋ฆฌ๋œ ๊ธฐ์‚ฌ๋ฅผ ๋ฐœ๊ฒฌ. ์ฐธ๊ณ ์šฉ์œผ๋กœ ๋ฒˆ์—ญ(์˜์—ญ)ํ•ด์„œ ์ •๋ฆฌํ•œ๋‹ค. Object-C ๋กœ๋ถ€ํ„ฐ ์ด์‹ ๋œ cocos2d-x์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š”, ๊ทธ ๋™์•ˆ, Object-C์— ๋Œ€ํ•ด ์ ‘์ ์ด ์—†์—ˆ๋˜ C++ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ํฐ ํ˜ผ๋ž€์„ ์•ˆ๊ฒจ์ค๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์ดํ•ด ์—†์ด ์ข‹์€ C++ ํ”„๋กœ์‹œ์ ธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜๋Š” ์—†๊ธฐ์—,  ์ €๋Š” OC์™€ cocos2d-x ์–‘์ชฝ ๋ชจ๋‘์— ๊ฒฝํ—˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด, cocos2d-x๊ฒŒ์ž„์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ถ„๋“ค์—๊ฒŒ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์„๊นŒ ํ•˜๋Š” ๋งˆ์Œ์œผ๋กœ ์ด ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. C++์˜ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š”, '๋ˆ„๊ฐ€ ๋ˆ„๊ตฌ์—๊ฒŒ Release ์›์น™์„ ์ ์šฉํ•˜๋Š”๊ฐ€' ์ฆ‰, 'Object๋ฅผ ์ƒ์„ฑํ•˜๋Š” new ์—ฐ์‚ฐ์ž๋ถ€ํ„ฐ, ์‚ญ์ œํ•˜๋Š” delete ์—ฐ์‚ฐ๊นŒ์ง€, ๋ˆ„๊ฐ€ ์ฑ…์ž„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๊ฐ€ ' ์— ์ฃผ์š” ๋…ผ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.  ๋งŒ์•ฝ function ์•ˆ์—์„œ object์˜ life-cycle์ด ๋ชจ๋‘ ์ด๋ฃจ์–ด์ง„๋‹ค๋ฉด, ๊ทธ์ € function์˜ return๋ฌธ ์ง์ „์— ์‚ญ์ œํ•˜๋Š” ๊ฒƒ ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.  ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ, ์šฐ๋ฆฌ๋Š” new๋กœ๋ถ€ํ„ฐ function body ๋ฐ–๊นŒ์ง€์˜ life-cycle์„ ๊ฐ€์ง€๋Š” function์„ ๋งŒ๋“œ๋Š”๋ฐ ๊ทธ๋ ‡์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” Object๋“ค์„ Stack์— ์ง์ ‘ ์ƒ์„ฑํ•จ์œผ๋กœ์จ, Dynamic Memory(Heap)์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. (๋ฌผ๋ก , ์Šคํƒ์— ํฐ Object๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ ์˜ณ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.) ๋งŒ์•ฝ, function ๋ฐ–์—์„œ life-cycle์„ ๊ฐ€์ง€๋Š” Object๋ฅผ ๋‹ค๋ฃฌ๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” ๋ˆ„๊ตฌ์—๊ฒŒ Release ์›์น™์„ ์ ์šฉ์‹œ์ผœ์•ผ ํ• ์ง€ ์• ๋งคํ•ด ์งˆ ๊ฒƒ์ด๊ณ , Object๋ฅผ Release ์‹œํ‚ฌ ์ ์ ˆํ•œ (๋‹ค๋ฅธ) ์žฅ์†Œ๋ฅผ ๊ฐ€์ ธ์•ผ๋งŒ ํ•  ๊ฒƒ์ด๋ฉฐ, ๋งŒ์•ฝ ๊ทธ Object๊ฐ€ ๋‹ค์–‘ํ•œ Obj...

C++ ๋™์ ์œผ๋กœ ๊ฐ์ฒด ๋ฐฐ์—ด์„ ๋งŒ๋“ค ๋•Œ, Vector๋ฅผ ์จ์•ผํ• ๊นŒ ๊ทธ๋ƒฅ ๋ฐฐ์—ด์„ ์จ์•ผํ• ๊นŒ?

Static/Dynamic Array? The C++ array classes are better behaved than the low-level C array because they know a lot about themselves, and can answer questions C arrays can't. They are able to clean after themselves. And more importantly, they are usually written using templates and/or inlining, which means that what appears to a lot of code in debug resolves to little or no code produced in release build, meaning no difference with their built-in less safe competition. All in all, it falls on two categories: Dynamic arrays Using a pointer to a malloc-ed/new-ed array will be at best as fast as the std::vector version, and a lot less safe (see  litb's post ). So use a std::vector. Static arrays Using a static array will be at best: as fast as the  std::array  version and a lot less safe. So use a  std::array . Uninitialized memory Sometimes, using a  vector  instead of a raw buffer incurs a visible cost because the  vector  ...

๊ฐ์ฒด๋ฐฐ์—ด (๋™์ /์ •์ )์ดˆ๊ธฐํ™”

class Test { public : Test( int a, int b ); }; ์œ„ ํด๋ž˜์Šค ์ฒ˜๋Ÿผ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ฃผ๊ณ  ์‹ถ์€ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ. Test test( 1, 2 );  ์œ„ ์™€ ๊ฐ™์ด ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ  ๋งŒ์•ฝ ์ด ํด๋ž˜์Šค๋ฅผ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋™์ ํ• ๋‹น์„ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. Test test[10];                                      //์—๋Ÿฌ ๋ฐœ์ƒ, ๋””ํด๋“œ ์ƒ์„ฑ์ž ์—†์Œ Test test[2] = { Test( 1, 1 ), Test( 2, 2 ) };    //๊ฐ€๋Šฅ Test* test = new Test[10];                     //์—๋Ÿฌ ๋ฐœ์ƒ, ๋””ํด๋“œ ์ƒ์„ฑ์ž ์—†์Œ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ class Test { public : Test(); Test( int a, int b ); }; Test* test = new Test[10];     10๊ฐœ์˜ ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ธด ํ•˜์ง€๋งŒ Test( int a, int b ) ๋ฅผ ํ˜ธ์ถœ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ํ•ด์„œ ๋ฐฐ์—ด ์ˆ˜ ๋งŒํผ ์ดˆ๊ธฐํ™”๋ฅผ ์‹œ์ผœ ์ฃผ์–ด์•ผํ•œ๋‹ค. for ( int i = 0 ; i < 10 ; ++i ) { test[i].Initialize( 10, 10 ); }

Visual Studio์—์„œ Cocos2d-x ์ฝ˜์†”์ฐฝ ๋กœ๊ทธ ๋„์šฐ๊ธฐ

1. win32/main.cpp #pragma comment(linker, "/entry:wWinMainCRTStartup /subsystem:console"); ์ถ”๊ฐ€ํ•œ๋‹ค. 2. ํ”„๋กœ์ ํŠธ ์†์„ฑ -> ๋ง์ปค -> ์‹œ์Šคํ…œ  -> ํ•˜์œ„์‹œ์Šคํ…œ ์ฝ˜์†”(SUBSYSTEM::CONSOLE) ๋กœ ๋ณ€๊ฒฝ

Cocos2d-x / c++ casting์— ๋Œ€ํ•˜์—ฌ..

http://sweeper.egloos.com/m/1907485 ๋ช…์‹œ์  ํƒ€์ž…์บ์ŠคํŒ…์— ๋Œ€ํ•˜์—ฌ..

์ „์—ญ ๋ณ€์ˆ˜/ํ•จ์ˆ˜ ๊ด€๋ฆฌ์— ๊ด€ํ•œ ์ฐธ๊ณ 

[C++ ์ •๋ฆฌ] ํ•จ์ˆ˜์˜ ์ข…๋ฅ˜ ๋ฐ ํ˜ธ์ถœ ์œ ํ˜• c,c++ ํ—ค๋” ํŒŒ์ผ์— ์ „์—ญ๋ณ€์ˆ˜ ์„ ์–ธํ•˜๊ธฐ ์ „์—ญ(global)๋ณ€์ˆ˜๋ฅผ ์œ„ํ•œ extern์˜ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ