Game Engine Architecture 2

SYieeΒ·2022λ…„ 10μ›” 18일
0

κ²Œμž„μ—”μ§„

λͺ©λ‘ 보기
2/5

πŸ“Œ rendering engine

βœ” Drawing things on the screen

  • ν…μŠ€νŠΈ, 이미지, 메쉬λ₯Ό μŠ€ν¬λ¦°μ— κ·Έλ¦°λ‹€.

βœ” Low-level renderer

πŸ“Œ scene optimizations

βœ”οΈScene graph/culling optimizations

  • gpuκ°€ μ‚¬λžŒμ΄ 보고 μžˆμ§€ μ•Šμ€ 곳을 λ Œλ”λ§ 라지 μ•ŠμœΌλ €κ³  λ³΄μ΄λŠ” μ• λ“€λ§Œ μ²΄ν¬ν•΄μ„œ λ¦¬μ†ŒμŠ€λ₯Ό 많이 λ¨ΉλŠ” 것은 μ§€λΌλ²„λ¦¬λŠ 것 β†’ culling
  • 멀리 μžˆμ„ λ•ŒλŠ” λ””ν…ŒμΌμ΄ ν•„μš”κ°€ μ—†λ‹€. κ°€κΉŒμ΄ μžˆμ„ λ•Œλ§Œ μžμ„Ένžˆ 보여주면 λœλ‹€.
  • ν•„μš”ν•œ μ• ν•œν…Œλ§Œ νž˜μ„ 집쀑 β†’ κ°€κΉŒμ΄ μžˆλŠ” κ²ƒμ—λŠ” 컴퓨터 λ¦¬μ†ŒμŠ€λ₯Ό 많이 ν• λ‹Ήν•΄μ„œ κ³ ν€„λ¦¬ν‹°λ‘œ λ Œλ”λ§μ„ ν•΄μ€€λ‹€.

βœ”οΈ Frustum cull & spatial subdivision

  • Frustum culling : λ³΄μ΄λŠ” 곳만 λ Œλ”λ§
  • spatial subdivision :
    • 내뢀에 vertexκ°€ λ„ˆλ¬΄ λ§Žμ•„ μˆ˜μ •ν•˜κΈ° μ–΄λ €μ›Œ.. μ½” λ°”κΎΈλ €λ©΄ μ½”κ°€ μ–΄λ”” μžˆλŠ”μ§€ 찾으러 κ°€μ•Όν•΄.. κ·Έλž˜μ„œ κ³΅κ°„λΆ„ν™œμ„ ν•œλ‹€.
    • μœ μ €κ°€ 7λ²ˆλ°©μ— 있으면 6번 방만 λ³Ό 수 μžˆμœΌλ‹ˆ 6번 방만 λ Œλ”λ§μ„ ν•œλ‹€.

βœ”οΈ Level of detail (LOD)

  • 멀리 있으면 였λ₯Έμͺ½μ— κ°€κΉκ²Œ ν‘œν˜„ν•œλ‹€.
  • poping artifactκ°€ 생긴닀 β†’ κ°‘μžκΈ° λ¦¬μ†ŒμŠ€κ°€ λ§Žμ•„μ§€λ©΄μ„œ 생긴닀.

visual effects

  • Modern game engines support a wide range of visual effects as follows:
    β€’ Particle systems (for smoke, fire, water splashes, etc.)
    β€’ Decal systems (for bullet holes, foot prints, etc.)
    β€’ Light mapping and environment mapping
    β€’ Dynamic shadows
    β€’ Full-screen post effect, applied after the 3D scene has been rendered to an offscreen
    buffer.
    ➒ high dynamic range (HDR) tone mapping and bloom
    ➒ full-screen anti-aliasing (FSAA)
    ➒ color correction and color-shift effects, including bleach bypass, saturation and desaturation effect, etc.

  • Particles and decal systems are usually distinct components of the rendering engine
    and act as inputs to the low-level renderer.

  • Light mapping, environment mapping and shadows are usually handled internally
    within the rendering engine proper.

front end

HUD(head-up display)

  • 이런 κΈ€μž(인벀토리)듀은 카메라λ₯Ό 움직여도 삼차원 곡간에 μ–΄λ””λ₯Ό 보고 μžˆμ–΄λ„ κ³„μ†ν•΄μ„œ μΌμ •ν•œ ν˜•νƒœμ˜ 정보λ₯Ό 곡유 β†’ 2d λ Œλ”λ§

billboard

  • λ‚˜λ¬΄κ°™μ€ 것을 μžμ„Έν•˜κ²Œ μ•ˆ 보기 λ•Œλ¬Έμ—
  • 2d 이미지인데 λ‚΄κ°€ 이동을 ν•˜λ©΄ 이미지가 λ‚˜λ₯Ό λ”°λΌμ„œ 움직인닀. μœ μ €κ°€ λΉ™κΈ€ λΉ™κΈ€ 돌면 μœ μ €μ˜ 머리 λ°©ν–₯을 λ”°λΌλ‹€λ‹ˆλ©° νŒλ–ΌκΈ°λ₯΄,γ„Ή λ Œλ”λ§ν•˜κ³  이 νŒλ—΄κΈ° μœ„μ— λ Œλ”λ§μ΄ λ˜λŠ” 2d 이미지λ₯Ό λ°©ν–₯에 따라 projectionν•œ κ²ƒμœΌλ‘œ λ Œλ”λ§μ„ ν•œλ‹€.
  • 2d 이미지 λ Œλ”λ§μ΄κΈ° λ•Œλ¬Έμ— 적은 λ¦¬μ†ŒμŠ€κ°€ ν•„μš”ν•˜λ‹€

perspective vs. orthographic

  • perspective : 멀리 있으면 μž‘κ²Œ 보이게
  • orthographic : 멀리 μžˆλ“  κ°€κΉŒμ΄ μžˆλ“  μ ˆλŒ€ν¬κΈ°λ‹€ κ°™λ‹€
    ex) GUI 항상 μΌμ •ν•˜κ²Œ λ³΄μ—¬μ€˜μ•Ό 함

Profiling and Debugging

: Profiling and Debugging tool을 μ΄μš©ν•˜μ—¬ 버그λ₯Ό μˆ˜μ •ν•œλ‹€

  • λ©”λͺ¨λ¦¬ λˆ„μˆ˜ λ‹€ μ•Œλ €μ€€λ‹€.

Collision & Physics

  • 좩돌과 λ¬Όλ¦¬λŠ” 잘 μ—°κ²°λ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€.
  • μ½œλ¦¬μ „ 체크λ₯Ό λŒ€μΆ©ν•˜λ©΄ μ•ˆ λ§žμ•˜λŠ”λ° λͺ¬μŠ€ν„°κ°€ λ‚ μ•„κ°€κ²Œ λœλ‹€β€¦! μ˜ˆμ „μ—λŠ” λ‚˜ λͺ¬μŠ€ν„° 큰 λ‘κ°œμ˜ λ°•μŠ€λ‘œλ§Œ 계산을 ν•˜λ©΄ λ˜μ—ˆλŠ”λ° μ΄μ œλŠ” 더 λ§Žμ€ λ°•μŠ€κ°€ ν•„μš” 해진닀
    β†’ μ΄λŸ°κ²ƒμ„ 효율적으둜 ν•˜κΈ° μœ„ν•΄
  • μ½œλ¦¬μ „μ΄ λ˜μ—ˆμ„ λ•Œ μ–΄λ–€ μ‹μœΌλ‘œ λ˜μ—ˆλŠμ§€λ„ μ€‘μš”, μœ„μ—μ„œ λ§žμ•˜λŠ”μ§€ μ˜†μ—μ„œ λ§žμ•˜λŠ”μ§€β€¦ 이후에 μ–΄λ””λ‘œ μž‘μš©μ„ ν•΄μ•Όν•˜λŠ”μ§€ μ•Œμ•„μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— 이후 ν”Όμ§μŠ€μ™€λ„ κΈ΄λ°€ν•˜κ²Œ 연결이 됨

Ragdoll physics

  • μ‚¬λžŒμ€ κ΄€μ ˆμ΄ λ‹€ 연결이 λ˜μ–΄ μžˆλ‹€. νž˜μ„ κ°€ν•˜λ©΄ κ΄€μ ˆμ΄ μ΅œλŒ€λ‘œ λŒμ•„κ°€λŠ” 각도가 μ–Όλ§ˆμΈλ° κ±°κΈ°μ„œ λ‹€μŒ κ΄€μ ˆλ„ ~
  • 큰 νž˜μ„ 팍 λ°›μ•˜μ„ λ•Œ μž‘μ€ νž˜μ€ λ‹€ λ¬΄μ‹œν•˜κ³  큰 νž˜μ— μ˜ν•΄μ„œ κ΄€μ ˆμ²΄μ˜ νšŒμ „, νž˜μ— μ˜ν•΄ 날아가도둝…

Skeletal Animation

β€’ Sprite/texture animation
β€’ Rigid body hierarchy animation
β€’ Skeletal animation
β€’ Vertex animation : vertex λ³„λ‘œ μ• λ‹ˆλ©”μ΄μ…˜μ„ 가지고 μžˆλŠ” 것

Skeletal Animation

  • μ‚¬λžŒμ˜ 본듀을 λ‹€λ£Έ

  • 본듀을 μ •μ˜ν•˜κΈ° μœ„ν•΄ μ›€μ§μž„μ„ μ •μ˜ν•˜κΈ° μœ„ν•΄ 배열을 μ‚¬μš©ν•œλ‹€.

  • Inverse kinematics
    : κ΄€μ ˆμ²΄μ˜ μœ„μΉ˜ 정보λ₯Ό λ‹€ μ•Œκ³  μžˆμ–΄μ„œ μ΅œν›„μ˜ end단 κΉŒμ§€μ˜ μœ„μΉ˜λ₯Ό μ •ν•΄μ€€λ‹€.
    μ •λ³΄λŠ” μ—†λŠ”λ° μ†μ΄λ‚˜ 발 끝 μ •λ³΄λ§Œ 있으면 λŒ€κ°• λ‹€λ₯Έ 것듀을 μ„€μ •ν•΄μ€Œ
    κ΄€μ ˆλ“€μ€ μ΅œλŒ€ νšŒμ „ 각도λ₯Ό 가지고 μžˆλŠ”λ° μ–΄λ–€ ν¬μ¦ˆκ°€ μ•ˆμ •μ μ΄κ³  이런걸 λ‹€ λ„£μ–΄μ„œ 졜적의 μžμ„Έλ₯Ό 찾아라 ν•˜κ³  ν•œλ‹€.

  • Additive animation
    : μ• λ‹ˆλ©”μ΄μ…˜μ„ ν•©μΉ˜λŠ” 것
    κ±·κΈ°, μž₯μ „ μ• λ‹ˆλ©”μ΄μ…˜μ΄ μžˆμ„ λ•Œ 이 λ‘κ°œλ₯Ό ν•©μ³μ„œ κ±ΈμœΌλ©΄μ„œ μž₯μ „ν•˜λŠ” μ• λ‹ˆλ©”μ΄μ…˜μ„ λ§Œλ“€ 수 μžˆλ‹€. 이 κΈ°μˆ μ„ μ“°κ²Œ 되면 λ””μžμ΄λ„ˆκ°€ μž‘μ—…ν•˜λŠ” μ‹œκ°„μ΄ 쀄어듬

HID

ν‚€λ³΄λ“œλ‚˜ 마우슀 인풋을 λ°›μ•„μ„œ 무언가λ₯Ό ν•œλ‹€.

Online Multiplayer

  • 싱크가 μ•ˆ λ§žλŠ” 상황이 λ°œμƒ
  • 지연이 생긴닀…
  • 언리얼이 νŒ¨ν‚€μ§€λ₯Ό μ§€μ›ν•œλ‹€.
  1. Single-screen multiplayer : ν”ŒμŠ€λ‚˜ λ‹Œν…λ„μ—μ„œ λ³΄μ΄λŠ” ν™”λ©΄
  2. Split-screen multiplayer : 1pλŠ” μœ„μͺ½ν™”λ©΄ 2pλŠ” μ•„λž˜μͺ½ν™”λ©΄ λ³΄λ©΄μ„œ ν•˜λŠ”κ²ƒ
  3. networked multiplayer : 옡치, λ°°κ·Έ, λ°œλ‘œλž€νŠΈ

Gameplay Foundation

Gameplay foundation systems

  • μŠ€ν¬λ¦½νŒ… μ‹œμŠ€ν…œμ„ μ΄μš”ν•΄ κ°œλ°œμžκ°€ μ•„λ‹ˆμ–΄λ„ μ†μ‰½κ²Œ 만λ“₯수 μžˆλ„λ‘ 제곡
  • μš”μ¦˜μ€ 둜우 λ ˆλ²¨κΉŒμ§€ λ””μžμ΄λ„ˆκ°€ λ³Ό ν•„μš”κ°€ μ—†λ‹€. λ‚˜ μ•„λ¬΄λ‚˜ κ³ μš©ν•΄μ„œ κ²Œμž„ 자체의 μŠ€ν¬λ¦½νŒ… ν•  수 있게 ν• λž˜
  • λ“œλž˜κ·Έ μ•€ λ“œλžμœΌλ‘œ μ›”λ“œμ— κ·Έλƒ₯ λ°°μΉ˜μ‹œν‚¬ 수 μžˆλ‹€.~

Event system

  • μ–Έλ¦¬μ–Όμ—μ„œ 잘 μ œκ³΅ν•΄μ£Όμ–΄μ„œ 쉽닀!
  • 이벀트 μ‹œμŠ¨ν…œμ΄ μ—†μœΌλ©΄ 정보λ₯Ό λ„˜κ²¨μ€„ λ•Œ μ–΄λ””κΉŒμ§€ λ„˜κ²¨μ€„ 것 이며 κ·œμ•½μ€ μ–΄λ–»κ²Œ λ˜λŠ”μ§€ λ‹€ μ•Œμ•„μ•Όν•˜κ³  λ³΅μž‘β€¦..

Scripting system

  • native languageκ°€ μ•„λ‹ˆλΌ 미리 λ§Œλ“€μ–΄μ§„ κ·œμ•½μ— μ˜ν•΄ ν•˜κΈ° μ‰½κ²Œ λ§Œλ“€μ–΄μ§„ 것
  • μΈν„°ν”„λ¦¬ν‹°λ“œλ³΄λ‹€ μ»΄νŒŒμΌγ„Ή
    • 컴파일 : μ†ŒμŠ€ μ½”λ“œλ₯Ό μ»΄νŒŒμΌμ„ν•˜λ©΄ 기계어가 λ‚˜μ˜€κ³  그것을 μ‹€ν–‰
      β†’ κΈ°κ³„μ–΄λ‘œ λ‚˜μ˜€λŠ” 것은 ν•˜λ“œμ›¨μ–΄ 쒅속적이닀. ν•˜λ“œμ›¨μ–΄λ§ˆλ‹€ λ‹€λ₯΄λ‹ˆκΉŒ
    • 인터프리터 : κΈ°κ³„μ–΄λ‘œ λ²ˆμ—­ν•˜μ§€ μ•Šκ³  쀑간에 ν•Έλ“€λ§ν•΄μ£ΌλŠ” μ‹œμŠ€ν…œμ΄ μžˆλ‹€.
      β†’ μ–΄λ–€ 기계냐에 상관없이 λ™μΌν•œ ν˜•νƒœλ‘œ λ°”κΏ” μ£Όλ©΄ λœλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λ©€ν‹° ν”Œλž«νΌμ—μ„œ 차이없이 λ˜‘κ°™μ€ ν˜•νƒœλ‘œ λ§Œλ“ λ‹€.
      쒀더 λ²”μš©μ„±
  • μŠ€ν¬λ¦½νŒ… λž­κ·€μ§€λ‘œ μž‘μ„±ν•œ 것은 바뀐 λΈ”λŸ­λ§Œ μΈν„°ν”„λ¦¬ν„°λ‘œ 보내 μ‹€ν–‰μ‹œν‚€λ©΄ λ˜μ§€λ§Œ 컴파일 μ–Έμ–΄λŠ” 전체λ₯Ό λ‹€ 컴파일 ν•΄μ•Όν•œλ‹€.
  • 슀크립트 μ½”λ“œ μ—­μ‹œλ„ μ „λΆ€ λ‹€ λ¦¬λ‘œλ”©ν•΄μ€˜μ•Ό ν•˜λŠ” κ²½μš°λ„ μžˆλ‹€.

Blueprints Visual Scripting system of Unreal Engine

  • μ—°κ²°ν•˜λŠ” 청사진
  • OO κ°œλ…μ„ μ‚¬μš©ν•¨
  • flowλ₯Ό 타고 μ‹€ν–‰

Artificial Intelligence Foundations

  • Path finding : μ‹€μ‹œκ°„ κΈΈμ°ΎκΈ°

Subsystems

  • terrain rendering μ–΄λ–»κ²Œ 할거냐
  • 카메라 μ–΄λ–»κ²Œ 할거냐
  • AI μ–΄λ–»κ²Œ 할거냐


πŸ–‡ Reference

ν•΄λ‹Ή ν¬μŠ€νŠΈλŠ” κ°•ν˜•μ—½ κ΅μˆ˜λ‹˜μ˜ κ²Œμž„μ—”μ§„κΈ°μ΄ˆ [GameEngine-22-2] μˆ˜μ—…μ„ μˆ˜κ°•ν•˜κ³  μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. 잘λͺ»λœ λ‚΄μš©μ΄ μžˆλ‹€λ©΄ λŒ“κΈ€λ‘œ μ•Œλ €μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€πŸ˜Š

profile
κ²Œμž„ 개발자

1개의 λŒ“κΈ€

comment-user-thumbnail
2024λ…„ 9μ›” 15일

To his surprise, Tom began hitting winning streaks, each hand better than the last. The table’s interactive features and the thrill of real-time betting created an exhilarating experience. By the time the session ended, Tom had accumulated https://mostbetplay.kz/ a significant amount of winnings, far exceeding his expectations. His late-night gamble not only provided him with a substantial financial boost but also a newfound confidence in his gaming abilities. Tom’s story is a reminder that sometimes the most unexpected moments can lead to remarkable achievements, turning an ordinary evening into an extraordinary success.

λ‹΅κΈ€ 달기