μ˜€λŠ˜μ€ λ‚΄κ°€ λ§Œλ“  κ²Œμž„μ˜ μ €μž₯ μ‹œμŠ€ν…œμ— λŒ€ν•΄ ν•œλ²ˆ μ†Œκ°œν•΄λ³Όκ²Œ!



[λ°©μΉ˜ν˜• 힐링 κ²Œμž„ "토끼 ν‚€μš°κΈ°"]



처음 κ²Œμž„μ„ κΈ°νšν• λ•Œ, λ‚˜λŠ” 이 κ²Œμž„μ— μ €μž₯ λ²„νŠΌμ΄ μ—†μ—ˆμœΌλ©΄ ν–ˆμ–΄.

λ‹€λ₯Έ λ°©μΉ˜ν˜• κ²Œμž„λ“€μ²˜λŸΌ μ‚¬λžŒλ“€μ΄ κ²Œμž„μ„ 끄고 싢을 λ•Œ ꡳ이 μ €μž₯ λ²„νŠΌμ„ λˆ„λ₯΄μ§€ μ•Šκ³  앱을 μ’…λ£Œν•˜λ”λΌλ„ λ‹€μŒ κ²Œμž„μ„ 켰을 λ•Œ 이전 μ§„ν–‰ 상황이 λ‘œλ“œλ˜λŠ” κ²½ν—˜μ„ μ£Όκ³  μ‹Άμ—ˆκ±°λ“ .

λ‹€ν–‰νžˆλ„ 이 κ²Œμž„μ€ κ²Œμž„μ— λ³€ν˜•μ΄ κ°€ν•΄μ§€λŠ” μˆœκ°„, 즉 μ €μž₯이 ν•„μš”ν•œ μˆœκ°„λ“€μ€ μ‚¬μš©μžκ°€ κ°œμž…ν•˜λŠ” μˆœκ°„μΈ μ‹œμ„€ ꡬ맀, 밭의 κ°•μ œ μˆ˜ν™• λ“±μœΌλ‘œ λͺ…ν™•ν–ˆκ³ , κ·Έλ ‡μ§€ μ•Šμ„ κ²½μš°μ—λŠ” μžλ™ 진행이 λ˜λ‹ˆκΉŒ ꡳ이 μ’…λ£Œ μ§μ „μ˜ μ •ν™•ν•œ κ²Œμž„ 상황을 μ €μž₯ν•  ν•„μš”λŠ” μ—†μ—ˆμ–΄ - μ‚¬μš©μžκ°€ κ°œμž…ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ κ²Œμž„μ„ μΌœλ†“λ“  꺼놓든 일정 μ‹œκ°„ ν›„μ—” 같은 κ²°κ³Όλ₯Ό λ‚΄λŠ” κ²Œμž„μ΄λ‹ˆκΉŒ.


이λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄μ„œ μ €μž₯ μ‹œμŠ€ν…œμ˜ μš”κ΅¬λ˜λŠ” μ‚¬μ–‘μœΌλ‘œλŠ” 크게 2κ°€μ§€κ°€ μžˆμ—ˆμ–΄.

1. μ•„μ£Ό λΉ λ₯΄κ²Œ μ €μž₯이 κ°€λŠ₯ν•  것 - ν”Œλ ˆμ΄μ–΄κ°€ 행동을 ν•˜λŠ” 도쀑 λŠλ €μ§€λ©΄ 렉이 κ±Έλ¦°λ‹€λŠ” λŠλ‚Œλ„ λ°›κ³  짜증이 λ‚  μˆ˜λ„ μžˆμœΌλ‹ˆκΉŒ, ν”Œλ ˆμ΄μ–΄κ°€ μΈμ‹ν•˜μ§€ λͺ»ν•  μ •λ„λ‘œ λΉ λ₯Έ 속도λ₯Ό κ°€μ§€λŠ” 게 ν•„μš”ν•΄

2. μž„μ˜μ˜ μˆœκ°„μ—λ„ μ •ν™•ν•œ μ €μž₯이 κ°€λŠ₯ν•  것 - 예λ₯Ό λ“€μ–΄, 이런 일이 일어날 κ°€λŠ₯성은 μ κ² μ§€λ§Œ, λ§Œμ•½ [토끼가 밭의 μˆ˜ν™•μ„ μ‹œμž‘ - μ €μž₯ - 밭이 ν† λΌμ˜ μˆ˜ν™•μ„ μŠΉλ‚™] 의 μˆœμ„œλ‘œ μ €μž₯이 이루어진닀면, λ‹€μŒ λ‘œλ”© λ•Œ ν† λΌλŠ” μˆ˜ν™• μƒνƒœλ‘œ, 밭은 κΈ°λ³Έ μƒνƒœλ‘œ λ‘œλ“œκ°€ λ˜μ–΄ 였λ₯˜κ°€ λ°œμƒν•  μˆ˜λ„ μžˆμ„ κ±°μ•Ό.


λ¨Όμ € 두 번째 쑰건을 μΆ©μ‘±ν•˜κΈ° μœ„ν•΄, λ‚˜λŠ” ν•œ tickμ—μ„œ κ²Œμž„μ˜ λͺ¨λ“  ν™œλ™μ΄ λλ‚œ 이후에 μ €μž₯이 μ‹œμž‘λ˜λ„λ‘ μ‹œμŠ€ν…œμ„ μ„€κ³„ν–ˆμ–΄.


7ff3c028e2f206a26d81f6e747837d69


이건 λ‚΄ ν”„λ‘œμ νŠΈμ— μ‚¬μš©λ˜λŠ” Update μ‹œμŠ€ν…œμΈλ°, 이 객체의 Registe r λ©”μ†Œλ“œμ— μ›ν•˜λŠ” λŒ€λ¦¬μžλ₯Ό λ“±λ‘ν•˜λ©΄ μžλ™μœΌλ‘œ λ§€ tickλ§ˆλ‹€ μ‹€ν–‰μ‹œμΌœμ£ΌλŠ” ꡬ쑰둜 λ˜μ–΄ μžˆμ–΄.

이 λ°©λ²•μ˜ μž₯점은, λŒ€λ¦¬μžλ₯Ό 등둝할 λ•Œ 뒀에 μˆœμ„œλ₯Ό 지정해쀄 수 μžˆλŠ”λ°, 이 값에 따라 ν•œ tick λ‚΄μ—μ„œ μ›ν•˜λŠ” λŒ€λ‘œ 호좜 μˆœμ„œλ₯Ό μ •ν•  수 μžˆλ‹€λŠ” 점이야.


7cf3c028e2f206a26d81f6e443877369


호좜 μˆœμ„œλŠ” μž„μ˜λ‘œ 정해도 λ˜μ§€λ§Œ, ν˜Όλž€μ„ ν”Όν•˜κΈ° μœ„ν•΄ 기초적인 κ°€μ΄λ“œλΌμΈμ„ 클래슀 맨 μœ„μ— 적어놨어.

이 κ°€μ΄λ“œλΌμΈμ„ 따라 ν”„λ‘œμ νŠΈλ₯Ό κ°œλ°œν•œλ‹€λ©΄ [μž…λ ₯ 처리 - κ²Œμž„ - 좜λ ₯ 처리] 순으둜 λŒ€λ¦¬μžκ°€ 호좜돼.


μ—¬κΈ°μ„œ λ‚˜λŠ” 4번째 μˆœμ„œμΈ 'μ €μž₯' μΉ΄ν…Œκ³ λ¦¬λ₯Ό λ§Œλ“€μ—ˆκ³ , μ΄λŠ” κ²Œμž„μ˜ μž…λ ₯λΆ€ν„° 좜λ ₯κΉŒμ§€μ˜ λͺ¨λ“  과정이 λλ‚œ 이후에 μ‹€ν–‰λ˜λ„λ‘ ν–ˆμ–΄.

μ΄λ ‡κ²Œ 되면 κ²Œμž„μ˜ ν•œ tick이 'μ§„ν–‰ 쀑에' μ €μž₯이 μΌμ–΄λ‚˜λŠ” 일을 ν”Όν•  수 μžˆμ–΄.



이제 남은 건 첫 번째 쑰건인 'μ•„μ£Ό λΉ λ₯΄κ²Œ μ €μž₯ν•˜κΈ°'인데, λ‚˜λŠ” μ €μž₯을 μ—¬λŸ¬ tick에 걸쳐 μ§„ν–‰ν•¨μœΌλ‘œμ¨ 이 쑰건을 κ΅¬ν˜„ν–ˆμ–΄.

μ—₯? 근데 μ§€κΈˆκΉŒμ§€ λ§ν•œ 거에 λ”°λ₯΄λ©΄ μ €μž₯은 ν•œ tick에 μΌμ–΄λ‚˜μ•Ό ν•˜λŠ” κ±° 아냐?


λ¬Όλ‘  λͺ¨λ“  κ²Œμž„ 객체의 'μ €μž₯'은 방금 λ§ν•œ λŒ€λ‘œ ν•˜λ‚˜μ˜ tickμ—μ„œ μΌμ–΄λ‚˜. ν•˜μ§€λ§Œ 이 tickκ³Ό tick μ‚¬μ΄μ˜ μ•„μ£Ό 짧은 μ‹œκ°„μ— κ²Œμž„ 전체λ₯Ό μ§λ ¬ν™”ν•˜κ³  좜λ ₯ν•˜λŠ” 것을 ν•œλ‹€λ©΄ κ²Œμž„μ΄ λŠλ €μ§€λŠ” 건 ν”Όν•  수 없을 κ±°μ•Ό.

이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄, λ‚˜λŠ” μ €μž₯을 두 κ°€μ§€ λΆ€λΆ„μœΌλ‘œ λΆ„λ¦¬ν–ˆμ–΄. ν•˜λ‚˜λŠ” μ‘΄μž¬ν•˜λŠ” λͺ¨λ“  κ²Œμž„ κ°μ²΄λ“€μ˜ 정보λ₯Ό λ¬Έμ„œν™”ν•˜λŠ” '캑쳐' 과정이고, λ‚˜λ¨Έμ§€λŠ” μΊ‘μ³ν•œ κ°μ²΄λ“€μ˜ 정보λ₯Ό μ·¨ν•©ν•˜μ—¬ ν•˜λ‚˜μ˜ 파일둜 λ§Œλ“€κ³  좜λ ₯ν•˜λŠ” 'ν”„λ¦°νŠΈ'ν•˜λŠ” 뢀뢄이야.

μ΄λ ‡κ²Œ ν•˜λ©΄ μΊ‘μ³λŠ” ν•œ ν”„λ ˆμž„ μ•ˆμ— μΌμ–΄λ‚˜μ•Όλ§Œ ν•˜μ§€λ§Œ, λ‚˜λ¨Έμ§€ 뢀뢄은 ꡳ이 ν•œ ν”„λ ˆμž„ μ•ˆμ— 이루어져야 ν•  ν•„μš”λŠ” μ—†μœΌλ‹ˆ κ²Œμž„μ΄ μ§„ν–‰λ˜λŠ” λ™μ•ˆ λ‹€λ₯Έ μŠ€λ ˆλ“œμ—μ„œ λŠκΈ‹ν•˜κ²Œ μ²˜λ¦¬ν•΄λ„ λ˜λŠ” 일이 돼.


그럼 μΊ‘μ²˜λŠ” μ–΄λ–»κ²Œ μ§„ν–‰λ˜λŠ”μ§€ μ•Œλ €μ€„κ²Œ.


7ef3c028e2f206a26d81f6e74081726a


λ¨Όμ €, μ €μž₯ν•˜κ³  싢은 κ°μ²΄μ—μ„œ '객체'λ₯Ό 'λ¬Έμ„œ'둜 μ €μž₯ν•˜λŠ” ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄. μœ„ μ˜ˆμ‹œμ—μ„œλŠ” 정적 클래슀의 ν•¨μˆ˜λ‘œ λ§Œλ“€μ—ˆμ§€λ§Œ, 객체λ₯Ό XmlNode ν˜•μ‹μœΌλ‘œ μ €μž₯ν•  수만 μžˆλ‹€λ©΄ 무λͺ… ν•¨μˆ˜κ°€ 됐든 뭐가 됐든 상관없어.

κ·Έ λ‹€μŒμ—, ν•΄λ‹Ή 객체의 캑처λ₯Ό λ‹΄λ‹Ήν•˜λŠ” μΊ‘ν„°λ₯Ό λ§Œλ“€μ–΄. μ΄λ•Œ μΊ‘ν„°λ₯Ό 생성할 λ•Œ 이 ν•¨μˆ˜λ₯Ό λ„£κ²Œ 돼.


79f3c028e2f206a26d81f6e44f89776d


λ‚˜λŠ” Farm이 Farm Manager에 등둝될 λ•Œ μžλ™μœΌλ‘œ 캑터도 μƒμ„±λ˜λ„λ‘ λ§Œλ“€μ—ˆμ–΄. μ΄λ•Œ μƒμ„±λœ μΊ‘ν„°λŠ” μ €μž₯ λͺ…령이 λ–¨μ–΄μ‘Œμ„ λ•Œ μœ„μ˜ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ 객체λ₯Ό λ¬Έμ„œν™”ν•˜κ³  μž„μ‹œλ‘œ μ €μž₯ν•΄λ‘λŠ” 역할을 μˆ˜ν–‰ν•΄.

μΆ”κ°€λ‘œ 객체λ₯Ό μΊ‘μ³ν•˜λŠ” μž‘μ—…μ€ 각 객체에 λŒ€ν•΄ 독립적이기 λ•Œλ¬Έμ— λ©€ν‹° μŠ€λ ˆλ”©μ„ μ‚¬μš©ν•˜μ—¬ λΉ λ₯΄κ²Œ μ €μž₯을 μ§„ν–‰ν•  수 μžˆμ–΄.


μ΄λ ‡κ²Œ λ¬Έμ„œν™” μž‘μ—…μ΄ λλ‚¬μœΌλ©΄, ν”„λ¦°νŠΈ μž‘μ—… λͺ…령을 메인 μŠ€λ ˆλ“œκ°€ μ•„λ‹Œ λ‹€λ₯Έ μŠ€λ ˆλ“œμ— μ˜ˆμ•½ν•˜κ³  μ‹œκ°„ μ†Œλͺ¨λ₯Ό 쀄이기 μœ„ν•΄ μ‹ μ†ν•˜κ²Œ 메인 μŠ€λ ˆλ“œλ₯Ό μž¬κ°œν•΄.

ν”„λ¦°νŠΈ μž‘μ—…μ€ λͺ¨λ“  객체의 정보λ₯Ό ν•˜λ‚˜μ˜ λ¬Έμ„œμ— μ“°λŠ” μž‘μ—…μ΄κΈ° λ•Œλ¬Έμ— 객체에 λŒ€ν•΄ 독립적이지 μ•Šκ³ , λ”°λΌμ„œ λ©€ν‹° μŠ€λ ˆλ”©μ„ μ‚¬μš©ν•  수 μ—†μ–΄μ„œ μ‹œκ°„μ΄ μ’€ κ±Έλ €. 그리고 μ΄λ ‡κ²Œ μž‘μ„±ν•œ νŒŒμΌμ„ 좜λ ₯ν•˜λŠ” 데도 μ‹œκ°„μ΄ 걸리고. ν•˜μ§€λ§Œ 이 μž‘μ—…μ€ 메인 μŠ€λ ˆλ“œκ°€ μ§„ν–‰λ˜λŠ” λ™μ•ˆ, 즉 κ²Œμž„μ΄ ꡬ동 쀑인 λ™μ•ˆ μΌμ–΄λ‚˜κΈ° λ•Œλ¬Έμ— μ‚¬μš©μžλŠ” 퍼포먼슀 μ €ν•˜λ₯Ό 체감할 수 μ—†μ–΄.


λ§Œλ“€μ–΄λ†“κ³  λ³΄λ‹ˆκΉŒ, 이 μ €μž₯ μ‹œμŠ€ν…œμ€ λ‹€λ₯Έ μž₯점도 κ°€μ§€κ³  μžˆλ‹€λŠ” κ±Έ 확인할 수 μžˆμ—ˆμ–΄!

예λ₯Ό λ“€μ–΄ κ²Œμž„μ˜ μ €μž₯을 ν•˜λ‚˜μ˜ ν•¨μˆ˜ λ˜λŠ” ν΄λž˜μŠ€κ°€ λ‹΄λ‹Ήν•œλ‹€λ©΄, κ²Œμž„μ΄ μ—…λ°μ΄νŠΈλ˜μ–΄ νŠΉμ • 객체의 μ €μž₯ 파일의 ν˜•μ‹μ΄ λ°”λ€Œμ—ˆμ„ λ•Œ μ €μž₯ μ•Œκ³ λ¦¬μ¦˜ 전체λ₯Ό λ‹€ μ†λ΄μ€˜μ•Ό ν•˜λŠ” 일이 일어날 수 μžˆμ–΄. ν•˜μ§€λ§Œ 이 μ‹œμŠ€ν…œμ€ ν•˜λ‚˜μ˜ κ°μ²΄λŠ” ν•˜λ‚˜μ˜ ν•¨μˆ˜κ°€ λ‹΄λ‹Ήν•˜κΈ° 떄문에, ν•œ 객체의 μ €μž₯ ν˜•μ‹μ΄ λ°”λ€Œμ–΄λ„ λͺ¨λ“  μ €μž₯ μ‹œμŠ€ν…œμ„ 손볼 ν•„μš” 없이 ν•΄λ‹Ή 객체λ₯Ό λ‹΄λ‹Ήν•˜λŠ” μΊ‘ν„°μ˜ 직렬화/역직렬화 ν•¨μˆ˜λ§Œ 손봐주면 돼.


μ˜€λŠ˜μ€ 이 μ €μž₯ μ‹œμŠ€ν…œμ— λŒ€ν•΄ μ•Œμ•„λ΄€λŠ”λ°, 글을 읽고 μœ μ΅ν•œ 아이디어듀을 κ°€μ Έκ°ˆ 수 있으면 μ’‹κ² μ–΄. μ•„λ‹ˆλ©΄ κ΄€λ ¨ν•΄μ„œ μƒˆλ‘œμš΄ 아이디어가 있으면 μ–Έμ œλ“ μ§€ λŒ“κΈ€ 남겨주면 쒋을 것 κ°™μ•„.

λ‹€μŒμ— 올 땐 κ²Œμž„μ˜ 디버그 μ‹œμŠ€ν…œμ— λŒ€ν•΄ 써 볼게!