[Unreal] κ²Œμž„ λͺ¨λ“œ, κ²Œμž„ μŠ€ν…Œμ΄νŠΈ

2023. 10. 28. 22:33Β·πŸ“ Game/✏ Unreal

1. μΈν„°λž™ν‹°λΈŒ κ²½ν—˜ μ œμž‘

ν”Œλ ˆμ΄μ–΄μ™€ μ›”λ“œ 간에 μ›ν™œν•œ μΈν„°λž™μ…˜μ„ κ΅¬ν˜„ν•  수 μžˆλ„λ‘ 언리얼 μ—”μ§„μ—μ„œλŠ” κΈ°λ³Έ κ²Œμž„ν”Œλ ˆμ΄ ν”„λ ˆμž„μ›Œν¬ 외에도 AI, ν”Όμ§μŠ€ λ“± 일반적인 κ²Œμž„ν”Œλ ˆμ΄ μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό λ‹€λ£¨λŠ” λ‹€μ–‘ν•œ μ‹œμŠ€ν…œκ³Ό ν”„λ ˆμž„μ›Œν¬λ₯Ό μ œκ³΅ν•œλ‹€.

 

2. κ²Œμž„ν”Œλ ˆμ΄ ν”„λ ˆμž„μ›Œν¬

κ²Œμž„ν”Œλ ˆμ΄ ν”„λ ˆμž„μ›Œν¬λŠ” 곡톡 κ²Œμž„ν”Œλ ˆμ΄ μš”μ†Œλ₯Ό μ²˜λ¦¬ν•˜λŠ” 핡심 μ‹œμŠ€ν…œ 및 ν”„λ ˆμž„μ›Œν¬κ°€ ν¬ν•¨λ˜μ–΄ μžˆλ‹€.

κ²Œμž„ν”Œλ ˆμ΄ ν”„λ ˆμž„μ›Œν¬

  • μ•‘ν„°, μ»΄ν¬λ„ŒνŠΈ
  • 카메라
  • 컨트둀러
  • κ²Œμž„ κ·œμΉ™
  • κ²Œμž„ λͺ¨λ“œ
  • ν”Œλ ˆμ΄μ–΄ μž…λ ₯
  • κ²Œμž„ν”Œλ ˆμ΄ 타이머
  • μœ μ € μΈν„°νŽ˜μ΄μŠ€

 

λ˜ν•œ μ–Έλ¦¬μ–Όμ—μ„œλŠ” μœ„μ˜ μš”μ†Œλ“€μ„ μ—°κ²°ν•˜μ—¬ λ‹€μŒκ³Ό 같은 κΈ°λŠ₯을 μ œκ³΅ν•˜κΈ°λ„ ν•œλ‹€.

  • μž…λ ₯ 처리
  • 물리 μ‹œλ¬Όλ ˆμ΄μ…˜
  • 인곡 μ§€λŠ₯
  • 데이터 λ ˆμ§€μŠ€νŠΈλ¦¬
  • κ²Œμž„ν”Œλ ˆμ΄ νƒœκ·Έ μ‹œμŠ€ν…œ
  • κ²Œμž„ν”Œλ ˆμ΄ μ–΄λΉŒλ¦¬ν‹° μ‹œμŠ€ν…œ
  • UI μ œμž‘ μ‹œμŠ€ν…œ
  • λ©€ν‹°ν”Œλ ˆμ΄ 지원

 

3. κ²Œμž„ λͺ¨λ“œ

κ²Œμž„ λͺ¨λ“œλŠ” κ²Œμž„μ˜ κ·œμΉ™μ„ κ²°μ •ν•˜κ³  정보λ₯Ό μ²˜λ¦¬ν•˜λŠ” 앑터이닀.

 

κ²Œμž„ λͺ¨λ“œμ— ν¬ν•¨λ˜λŠ” κ·œμΉ™μ€ λ‹€μŒκ³Ό κ°™λ‹€. μ΄λŸ¬ν•œ κ·œμΉ™μ˜ νŠΉμ§•μ€ κ²Œμž„ 쀑에 λ³€ν•˜μ§€ μ•Šμ„ μ •λ³΄λ“€μ΄λΌλŠ” 것이닀. 변경될 수 μžˆλŠ” 정보듀은 κ²Œμž„ λͺ¨λ“œμ—μ„œ κ΄€λ¦¬λ˜μ§€ μ•ŠλŠ” 것이 μ’‹λ‹€.

  • μ‘΄μž¬ν•˜λŠ” ν”Œλ ˆμ΄μ–΄μ™€ κ΄€λžŒμžμ˜ μˆ˜λŠ” λ¬Όλ‘ , ν—ˆμš©λœ ν”Œλ ˆμ΄μ–΄μ™€ κ΄€λžŒμž μ΅œλŒ€ 수
  • ν”Œλ ˆμ΄μ–΄κ°€ κ²Œμž„μ— λ“€μ–΄μ˜€λŠ” 방식, 슀폰 μœ„μΉ˜ 선택 κ·œμΉ™κ³Ό 기타 슀폰/리슀폰 λ™μž‘ 포함 κ°€λŠ₯
  • κ²Œμž„ μΌμ‹œμ •μ§€ κ°€λŠ₯ μ—¬λΆ€, κ²Œμž„ μΌμ‹œμ •μ§€ 처리 방식
  • 레벨 κ°„μ˜ μ „ν™˜, κ²Œμž„μ˜ μ‹œλ„€λ§ˆν‹± λͺ¨λ“œ μ‹œμž‘ μ—¬λΆ€ ν¬ν•¨

 

1) AGameModeBase

ν”Œλ ˆμ΄μ–΄μ˜ 수, κ·Έ ν”Œλ ˆμ΄μ–΄κ°€ κ²Œμž„μ— μ°Έμ—¬ν•˜λŠ” 방식 λ“±μ˜ 기본적인 μš”μ†Œλ“€μ€ μ—¬λŸ¬ μœ ν˜•μ˜ κ²Œμž„μ— κ³΅ν†΅μ΄μ§€λ§Œ, μ–΄λ–€ κ²Œμž„μ„ κ°œλ°œν•˜λŠ”μ§€μ— 따라 λ¬΄ν•œλŒ€μ˜ κ·œμΉ™ 변경이 κ°€λŠ₯ν•˜λ‹€. κ·Έ κ·œμΉ™μ΄ 무엇이든 μ •μ˜μ™€ κ΅¬ν˜„μ€ κ²Œμž„ λͺ¨λ“œμ—μ„œ ν•œλ‹€.

 

AGameModeBaseλŠ” λͺ¨λ“  κ²Œμž„ λͺ¨λ“œμ˜ 베이슀 클래슀둜 언리얼 버전 4.14 μ΄μ „μ˜ κ²Œμž„ λͺ¨λ“œ 베이슀 ν΄λž˜μŠ€μ˜€λ˜ AGameModeλ₯Ό λ‹¨μˆœν™”μ‹œν‚€κ³  νš¨μœ¨ν™”μ‹œν‚¨ 버전이닀. 이제 AGameModeλŠ” AGameModeBase의 μ„œλΈŒ 클래슀이며 κ²Œμž„ ν˜•μ‹, λ―Έμ…˜ μœ ν˜•, νŠΉλ³„ μ§€μ—­ κ·œμΉ™ 등에 따라 μ—¬λŸ¬ κ²Œμž„ λͺ¨λ“œλ₯Ό 생성할 수 μžˆλ‹€.

 

2) κ²Œμž„ λͺ¨λ“œ μ„€μ •

ν˜„μž¬ ν”„λ‘œμ νŠΈκ°€ μ–΄λ–€ κ²Œμž„ λͺ¨λ“œλ₯Ό λ”°λ₯΄κ³  μžˆλŠ”μ§€λŠ” ν”„λ‘œμ νŠΈ μ„ΈνŒ…μ—μ„œ 확인할 수 μžˆλ‹€.

 

ν”„λ‘œμ νŠΈ μ„ΈνŒ… > ν”„λ‘œμ νŠΈ > λ§΅&λͺ¨λ“œ

  • κΈ°λ³Έ κ²Œμž„λͺ¨λ“œ
    • λ””ν΄νŠΈλŠ” GameModeBase κ²Œμž„ λͺ¨λ“œμ΄λ‹€.
    • μ‚¬μš©μžκ°€ 직접 κ²Œμž„ λͺ¨λ“œλ₯Ό μ§€μ •ν•΄ 쀄 수 μžˆλ‹€.
  • λ””ν΄νŠΈ 폰 클래슀
    • 폰은 컨트둀러둜 μ‘°μ’… κ°€λŠ₯ν•œ 앑터이닀.
    • κ²Œμž„ν”Œλ ˆμ΄ λͺ¨λ“œμ— μ§„μž…ν•˜λ©΄ λ””ν΄νŠΈ 폰 클래슀둜 μ„€μ •λœ 폰이 슀폰되고 μ»¨νŠΈλ‘€λŸ¬μ— λΉ™μ˜λœλ‹€.
  • HUD 클래슀
    • HUDλŠ” ν”Œλ ˆμ΄μ–΄μ˜ μƒνƒœ 등을 ν™”λ©΄ μœ„μ— λ…ΈμΆœμ‹œν‚€λŠ” 기본적인 μΈν„°νŽ˜μ΄μŠ€μ΄λ‹€.
    • 참고둜 HUDλ³΄λ‹€λŠ” 언리얼 버전 4λΆ€ν„° λ“±μž₯ν•œ UMG μ‚¬μš©μ΄ ꢌμž₯되고 μžˆλ‹€.
  • ν”Œλ ˆμ΄μ–΄ 컨트둀러 클래슀
    • μ»¨νŠΈλ‘€λŸ¬λŠ” ν° λ˜λŠ” 캐릭터λ₯Ό 직접 μ œμ–΄ν•˜λŠ” ν΄λž˜μŠ€μ΄λ‹€.
    • ν”Œλ ˆμ΄μ–΄κ°€ 직접 μ‘°μ’…ν•˜λŠ” ν”Œλ ˆμ΄μ–΄ 컨트둀러, 컴퓨터가 μ‘°μ’…ν•˜λŠ” AI 컨트둀러둜 κ΅¬λΆ„λœλ‹€. ν”Œλ ˆμ΄μ–΄ μ»¨νŠΈλ‘€λŸ¬λŠ” ν”Œλ ˆμ΄μ–΄μ˜ μž…λ ₯을 폰이 직접 λ°›λŠ” 것이 μ•„λ‹ˆλΌ, ν”Œλ ˆμ΄μ–΄ μ»¨νŠΈλ‘€λŸ¬κ°€ μž…λ ₯을 λ°›κ³  ν°μ—κ²Œ μ μ ˆν•œ 행동을 ν•˜λ„λ‘ λͺ…령을 λ‚΄λ¦°λ‹€. AI μ»¨νŠΈλ‘€λŸ¬λ„ 같은 λ°©μ‹μœΌλ‘œ μ •ν•΄μ§„ λ‘œμ§μ— 따라 폰이 μ•„λ‹Œ AI μ»¨νŠΈλ‘€λŸ¬μ—κ²Œ ν•΄μ•Ό ν•  행동을 μ•Œλ €μ£Όλ©΄ μ»¨νŠΈλ‘€λŸ¬κ°€ 폰을 직접 움직인닀.
    • ν”Œλ ˆμ΄μ–΄ μ»¨νŠΈλ‘€λŸ¬λŠ” μ œμ–΄ν•  폰 ν΄λž˜μŠ€μ— λΉ™μ˜λ˜κ³  HUD, μž…λ ₯ 컨트둀, PlayerCameraManagerλ₯Ό μ„€μ •ν•œλ‹€.
  • κ²Œμž„ μŠ€ν…Œμ΄νŠΈ 클래슀
    • κ²Œμž„ κ·œμΉ™μ— κ΄€λ ¨λœ μ΄λ²€νŠΈκ°€ λ°œμƒν•˜κ³  νŠΈλž˜ν‚Ήμ„ 톡해 정보λ₯Ό λͺ¨λ“  ν”Œλ ˆμ΄μ–΄κ°€ κ³΅μœ ν•  ν•„μš”κ°€ μžˆμ„ λ•Œ, κ·Έ μ •λ³΄λŠ” κ²Œμž„ μŠ€ν…Œμ΄νŠΈμ— λ³΄κ΄€λ˜κ³  κ·Έλ₯Ό 톡해 λ™κΈ°ν™”λœλ‹€.
    • 예λ₯Ό λ“€μ–΄ κ²Œμž„ μ‹€ν–‰ μ‹œκ°„, μ ‘μ†ν•œ ν”Œλ ˆμ΄μ–΄ λͺ©λ‘, μ˜€ν”ˆ μ›”λ“œ κ²Œμž„μ—μ„œ μ™„λ£Œν•œ λ―Έμ…˜ λͺ©λ‘, ν˜„μž¬ κ²Œμž„ λͺ¨λ“œμ˜ 베이슀 클래슀, κ²Œμž„ μ‹œμž‘ μ—¬λΆ€ 등이 μžˆλ‹€.
  • ν”Œλ ˆμ΄μ–΄ μŠ€ν…Œμ΄νŠΈ 클래슀
    • ν”Œλ ˆμ΄μ–΄ κ°œμΈμ˜ 정보λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ ν΄λž˜μŠ€μ΄λ‹€.
    • 예λ₯Ό λ“€μ–΄ μŠ€μ½”μ–΄μ™€ 같은 κ°œλ³„ ν”Œλ ˆμ΄μ–΄μ˜ 기둝이 μžˆλ‹€.
  • κ΄€μ „μž 클래슀
    • ν”Œλ ˆμ΄μ–΄κ°€ κ²Œμž„μ˜ 직접 μ°Έμ—¬μžκ°€ μ•„λ‹Œ κ΅°μ€‘μ˜ μ—­ν• λ‘œ μžˆμ„ λ•Œ 무쀑λ ₯ λΉ„ν–‰ λ™μž‘ λ“± 이상적인 λ‹¨μˆœν•œ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ œκ³΅ν•œλ‹€.

 

3) νŠΉμ • λ ˆλ²¨μ— κ²Œμž„ λͺ¨λ“œ μ„€μ •

ν”„λ‘œμ νŠΈ μ„ΈνŒ…μ—μ„œ ν™•μΈν•œ κ²Œμž„ λͺ¨λ“œλŠ” λͺ¨λ“  λ ˆλ²¨μ— 기본으둜 μ μš©λ˜μ§€λ§Œ, νŠΉμ • λ ˆλ²¨μ—λ§Œ νŠΉλ³„ν•œ κ²Œμž„ λͺ¨λ“œλ₯Ό μ μš©ν•  μˆ˜λ„ μžˆλ‹€. ν˜„μž¬ λ ˆλ²¨μ— μ–΄λ–€ κ²Œμž„ λͺ¨λ“œλ₯Ό λ”°λ₯΄κ³  μžˆλŠ”μ§€λŠ” μ›”λ“œ μ„ΈνŒ…μ—μ„œ 확인할 수 μžˆλ‹€.

 

μ›”λ“œ μ„ΈνŒ…

 

 

4. κ²Œμž„ μŠ€ν…Œμ΄νŠΈ

κ²Œμž„ μŠ€ν…Œμ΄νŠΈλŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ κ²Œμž„μ˜ μƒνƒœλ₯Ό λͺ¨λ‹ˆν„°λ§ν•  수 μžˆλ„λ‘ ν•΄μ€€λ‹€. μ ‘μ†λœ λͺ¨λ“  ν΄λΌμ΄μ–ΈνŠΈκ°€ μ•Œμ•„μ•Ό ν•˜λŠ” 정보, ν”Œλ ˆμ΄μ–΄ 개개인이 μ•„λ‹Œ κ²Œμž„ λͺ¨λ“œμ— κ΄€λ ¨λœ 정보λ₯Ό 관리해야 ν•œλ‹€. 예λ₯Ό λ“€μ–΄ μ ‘μ†λœ ν”Œλ ˆμ΄μ–΄ λͺ©λ‘, νŒ€ 점수, μ˜€ν”ˆ μ›”λ“œ κ²Œμž„μ—μ„œ μ™„λ£Œν•œ λ―Έμ…˜ λ“±κ³Ό 같은 κ²Œμž„ μ „λ°˜μ μΈ ν”„λ‘œνΌν‹° 기둝을 μœ μ§€ν•  수 μžˆλ‹€.

 

1) AGameStateBase

AGameStateBaseλŠ” κ²Œμž„ μŠ€ν…Œμ΄νŠΈμ˜ 베이슀 ν΄λž˜μŠ€μ΄λ‹€. κΈ°λ³Έ ν•¨μˆ˜ κΈ°λŠ₯은 λ‹€μŒκ³Ό κ°™λ‹€.

  • GetServerWorldTimeSeconds: UWorld ν•¨μˆ˜ GetTimeSeconds의 μ„œλ²„ λ²„μ „μœΌλ‘œ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ μ–‘μͺ½μ—μ„œ λ™κΈ°ν™”λ˜μ–΄ λ¦¬ν”Œλ¦¬μΌ€μ΄μ…˜μ— λ―Ώκ³  μ‚¬μš©ν•  수 μžˆλŠ” μ‹œκ°„μœΌλ‘œ ν™œμš©ν•œλ‹€.
  • PlayerArray: λͺ¨λ“  APlayerState 였브젝트의 λ°°μ—΄λ‘œ κ²Œμž„μ˜ λͺ¨λ“  ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ–΄λ–€ μž‘μ—…μ„ ν•  λ•Œ μœ μš©ν•˜λ‹€.
  • HasBegunPlay: κ²Œμž„μ˜ 앑터에 λŒ€ν•΄ BeginPlay ν•¨μˆ˜κ°€ 호좜된 경우 trueλ₯Ό λ°˜ν™˜ν•œλ‹€.

 

μ°Έκ³ 

https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/

 

μΈν„°λž™ν‹°λΈŒ κ²½ν—˜ μ œμž‘

μ‹œκ°„μ˜ 흐름에 따라 μ‹€ν–‰λœ ν”Œλ ˆμ΄μ–΄μ˜ λ™μž‘μ— λ°˜μ‘ν•˜λŠ” 버좔얼 μ›”λ“œλ₯Ό μ œμž‘ν•˜λŠ” 데 ν•„μš”ν•œ κ²Œμž„ν”Œλ ˆμ΄ λ©”μ»€λ‹ˆμ¦˜, 비헀이비어 그리고 쑰건을 λ§Œλ“œλŠ” λ°©λ²•μž…λ‹ˆλ‹€.

docs.unrealengine.com

https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/Framework/

 

κ²Œμž„ν”Œλ ˆμ΄ ν”„λ ˆμž„μ›Œν¬

κ²Œμž„μ˜ 틀을 μ΄λ£¨λŠ” κ²Œμž„ κ·œμΉ™, ν”Œλ ˆμ΄μ–΄ μž…λ ₯κ³Ό 컨트둀, 카메라, μœ μ € μΈν„°νŽ˜μ΄μŠ€ λ“±μ˜ μ½”μ–΄ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.

docs.unrealengine.com

https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/Framework/GameMode/

 

κ²Œμž„ λͺ¨λ“œμ™€ κ²Œμž„ μŠ€ν…Œμ΄νŠΈ

Game Mode, κ²Œμž„ λͺ¨λ“œμ™€ Game State, κ²Œμž„ μŠ€ν…Œμ΄νŠΈμ— λŒ€ν•œ κ°œμš”μž…λ‹ˆλ‹€.

docs.unrealengine.com

https://velog.io/@cedongne/UE5-Unreal-Engine-5-%EA%B8%B8%EB%9D%BC%EC%9E%A1%EC%9D%B4-7.-%EA%B2%8C%EC%9E%84-%EB%AA%A8%EB%93%9C

 

velog

 

velog.io

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Game/✏ Unreal' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [Unreal][Lyra] κ²Œμž„ν”Œλ ˆμ΄ μ–΄λΉŒλ¦¬ν‹° μ‹œμŠ€ν…œ
  • [Unreal][Lyra] λͺ¨λ“ˆν˜• κ²Œμž„ν”Œλ ˆμ΄, κ²Œμž„ ν”Όμ²˜ ν”ŒλŸ¬κ·ΈμΈ, κ²½ν—˜
  • [Unreal][C++] 타이머
  • [Unreal] ν”Όμ§μŠ€
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
[Unreal] κ²Œμž„ λͺ¨λ“œ, κ²Œμž„ μŠ€ν…Œμ΄νŠΈ
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”