이지프리

" 엔젠정보통신 "에 해당되는 글 1건

  1. 게임엔진

게임엔진


게임엔진... 알기쉽게말하면 자동차엔진에 비교하면된다.
엔진 성능이 좋을수록 차는 더좋아지고 외관에 신경을더쓸쑤있는거같이 생각하면됨.

게임구성

게임엔진과 게임소스코드랑 합집합 공통부분이 생기게된다.

게임소스
- 게임의 룰, 경험치, 속성 등을 변경
- 맵 에디터등을 통해 유저맵을 생성할 수도 있음.
- 퀘이크 언리얼등 소스가 공개됨

게임소스코드라는게 에디터나 이런것을 통해서 게임의 속성을 바꿀수 있는거지 그게 게임엔진이 되는건아니다.

게임엔진
.라이팅 & 쉐도우 처리(비지블)
- 외적으로 보여지는 부분이르모 프로그래머가 아닌
  개발자에게도 매우 관심있는 부분
- 라이팅기법이 여러가지인데 빛이나오는부분과 주변물체에따라 색도달라지고 등등임

- 대부분은 백그라운에서 비지블하게 처리됨
   : 예를들어 신크그래프는 게임에서 장면을 관리하고 처리해주는 개념으로 프로그래머가 아니라면 관심이 없을것임.
- 화면에 보이지 않는것은 신경쓰지말고 보이는거에만 신경써주기
- World - Switch(inside / outSide)
  : inside-> terrain -> building
  : outside -> Room -> walls
                             -> furniture
현실세계로 따져서 건물 내부를 들어가게되면
보이는부분과 안보이는부분을 트리형식으로 보이는거임

- 자동차의 도색과 엔진성능이 무관한 것 처럼 게임소스코드의
  수정으로 게임자체가 빨라지는것은 아님

게임 엔진 구성요소
구성 요소 주목적
렌더러     - 폴리곤을 화면에 출력함
애니메이션 - 사물의 움직임을 처리함
피직스     - 충돌처리 - 게임마다 복잡도가 다름
네트워크   - 서버와 클라이언트간의 통신
사운드     - 사운드출력

앞으로는 물리에 관련된 여러가지고 적용될것으로 보임
수학과 물리 기초학문에도 관심을 가져서 공부를.

렌더러
- 3차원 기하정보를 2D화면인 스크린상에 보여지도록 가공하고 보여지도록 하는 시스템
- 보통 Max나 마야로부터 플러그인을 통해 3차원, 데이터, 텍스쳐
, 애니메이션 데이터등을 추출하여 사용함

애니메이션
- 메쉬 연속 출력 애니메이션
- 비계층형 애니메이션
- 계층형 애니메이션
- 골격체 애니메이션
- 역기구학

골격체에서는 각 본과 연결된 점에 서로 상관관계가있고,한점은 한본과만 연결된게아니라 주변 본버텍스에 영향을 받게된다.

피직스는 일반적인 레이싱게임에서는 단순하게움직이지만
멋진게임에서는 차의 바퀴가 속도가되서 차체를 움직이게만든
그런거다.

게임엔진의 필요성
- 동일한 패턴으로 반복되는 작업 과정을 줄여줌으로써 개발시간 및 비용을 단축
- 게임의 내용적인 측면에 개발 시간을 보다 더 투자함으로써 게임콘텐츠의 질저ㄱ향상 도모
- 복잡한 게임 처리를 소화해낼수 있는 기반 마련

주요 게임 엔진
둠3엔젠 : 퀘이크시리즈의 후속 엔진
언리얼3 엔진 : 퀘이크 엔진에 필적한 만한 엔진
주피터엔진 : D3D를 만든 개발자들이 모여 만든 엔진

공개엔진
ogre: www.ogre3d.org
wild magic : www.geometrictools.com
cal3d : cal3d.sourceforge.net

상용엔진 vs 자체제작
상용엔진 : 시간절약, 검증된 성능, 구매한 엔진한 게임개발 방향성이 맞지 않을경우에 대한 리스크
, 사용엔진으로 모든것을 해결된 것이 아니라.
  엔진을 분석할 정도의 경험자가 요구됨
, 충분한 기술지원이 되는가와 개발자의 분석 능력 이상의 것을 요구하는 엔진은 좀더 신중히 고려해야함

자체제작
- 개발하고자 하는 게임에 최적한 됨
- 모든 내용으 ㄹ잘 이해하고 있으므로 수정이나 개조가
비교적 용이함,
- 검증되지 않는 성능
- 사용엔진과 비교해 성능이나 지원되는 효과가 미비할수도있음
- 제작자체가 매우 어려운 과정이므로 능력있는 개발자들이 요구됨

# 싱글F는 장면을 관리해주는거
화면에 나무 사람 지형등등이있는데
게임의 한장면을 생각하자 초당 60프레임 짜리 인데
1/60 하면 짧은시간에 다보여줘야하는데 이‹š 어떤식으로 렌더링순서를 해야하고 서로간의 관계.. 한장면에 어떤식으로 처리할껀지
가 하는게 싱글에프이다..
보이는거 안보이는거걸러내기도하고,
부모자식간의 관계,

정적메모리(스택) / 동적 메모리(힙)
메모리 leak
memory Fragmentation 메모리 단편화
- 실시간으로 나타나는지 아니면 계속놔두든지
   그런걸 잘생각해서 처리하면된다.
memory pool


asserte 와 log system
_asserte의 중요성 및 leCommon library를 이용한 실습
_ASSERTE(  ) 안은 무조건 참이여야한다.

ex) _ASSERTE(체력<50)  죽어다가 ƒ틴爭さ
2009/01/22 17:16 2009/01/22 17:16
top

Leave a comment..