DirtyFlag

2006 단어 게임
Game Programming Pattern 17 메모

아젠다


  • DirtyFlag란?
  • 이용 장면
  • 주의점


  • Dirty Flag란?


  • Dirty Bit이라고도합니다
  • 대상 데이터 또는 판별을위한 구현 패턴




  • Q. 해적선의 위치 관리 문제



    상대 변환 정보
    - 위치변환처리의 편리성으로 필요
    - (선박 이동으로 감시대 이동)

    절대 변환 정보
    - 각 Object의 세계 좌표를 결정합니다.
    - 화면을 그릴 때 필요

    위치 표현의 부모와 자식 계층
    舟 (p,r,s)
    └─ 見張り台 (p,r,s)
       └─ 船員 (p,r,s)
          └─ オーム (p,r,s)
    

    p: position(x,y,z)
    r: rotation(x,y,z)
    s: scale(x,y,z)

    옴의 절대 변환 정보는?
  • 부모의 상대 변환 정보에서 얻습니다
  • 船(p,r,s) x 見張り台(p,r,s) x 船員(p,r,s) x オウム(p,r,s)
    

    1frame으로 모두 움직이는 상황을 생각한다
  • 선박 이동 => 계산
  • 감시대 이동 => 계산
  • 선원 이동 => 계산
  • 앵무새 이동 => 계산


  • 절대 변환 정보 갱신 대상


    이동원
    업데이트 대상



    배, 감시대, 선원, 앵무새

    감시대
    감시대, 선원, 앵무새

    선원
    선원, 앵무새

    앵무새
    앵무새



    쓸데없는 계산
  • 앵무새: +3회
  • 선원: +2회
  • 감시대: +1회


  • 해결책
  • 계산 지연
  • DirtyFlag (1bit)를 각 객체에 할당
  • DirtyFlag:True => 절대 변환이 오래된
  • DirtyFlag:False => 절대 변환은 최신


  • 쓸데없는 계산
  • DirtyFlag가 서있는 물체를 부모로부터 순서대로 계산
  • 계산 후 DirtyFlag 낮추기
  • - 船,見張り台,船員,オウム移動
      - 船計算
        - 見張り台計算
          - 船員計算
            - オウム計算
    

    이용 장면



    Angular
    - 서버 전송 필요? 확인

    물리 엔진
    - 물체가 움직이고 있는지? 확인

    GUI 편집기
    - 일정 시간마다 편집 되었습니까? 확인

    Unidux
    - 상태가 바뀌었는지? 점검

    주의점



    CPU 비용
    - 계산 지연을 너무 하면 무거워지는 경우도 있다

    메모리 비용
    - 메모리 비용 >> CPU 비용의 경우는 사용하지 않는 것이 좋다

    DirtyFlag 입자 크기
    - 입도로 체크 시의 오버헤드가 바뀐다
    - 처리 시간, 전송량, 비트 사이즈 등

    좋은 웹페이지 즐겨찾기