[DX11] 0419, 0422 개발 일지, 수업

라멘커비·2024년 4월 22일
0

DirectX 2D

목록 보기
15/24

바바이즈유 개발 일지

24.04.19

할 일

  • STOP 목적어 만들자

    • 어제 해놓고갔네?ㅋㅋ
    • WALL IS STOP 했더니 WALLTEXT도 STOP이 됨
      • Info에 MyObjectiveType말고 연결된 텍스트의 목적어를 저장하는 TextObjective를 추가해서 구분해서 씀.
  • FLAG, FLAGTEXT, WIN 리소스 추가

  • FLAGTEXT

  • FLAG 플레이어

  • WIN TEXT

  • flag 애니메이션 on으로해놨다고해도 OFF로바껴있어야하지않나

    • 시작할때 AniOnOff함수 실행하면 되니까 ㄱㅊ
  • GUI로 맵찍는거

    • 버튼으로 액터 선택할 수 있게하고, 화면 인덱스 위치가져와서 그 인덱스위치에 생성되게하면되나?
    • 걔를 어캐 저장해야하지? 이미지가 아닌디
    • [오브젝트 종류 - 오브젝트 인덱스 위치] 가지는 맵 정보를 저장하고 맵 불러올 때 파일읽어서 불러오는걸로?
    • 나중에

이펙트 나중에 하고싶다

  • 문장 완성되거나 깨질 때 이펙트
  • 바바 이동할 때 이펙트
  • flag is win하면 깃발에 반짝이같은 이펙트

24.04.22

오늘 목표

  • 03 스테이지 캡처
  • WIN이랑 DEFEAT 대충 OK
  • 게임 끝을 만들면 YOU가 한개도없을때 끝나는 것도 가능 OK
  • PUSH, SINK, WATER, ROCK
  • 게임모드에 오브젝트 자동으로 생성하는 함수 만들자… OK

기록

  • 게임모드에 오브젝트 자동으로 생성하는 함수

  • Win, Defeat인 곳에 YOU가 간걸 언제검사해야하지?

  • MyObjectiveType이 YOU인 애가 MyObjectiveType이 DEFEAT인 애를 만나면 죽어야 함. 근데 둘다 PlayerObject임.

  • 파괴상태를 어디에만들어야되지? 텍스트도 파괴될 수 있으니까 Object에 넣어야할것같ㅊ은데 애니메이션 설정을 어캐해야하징?

  • DEFEAT속성인 애한테 올라간 YOU속성 개체 죽음. 롤백하면 살아나야함.

  • SINK는 YOU속성 개체 죽지만 자기도 파괴됨.

  • 생각해보니까 Stack에 얘네가 죽는지 마는지도 넣어야할듯!? ⇒ 아니다.. Defeat상태나 Sink상태면 안보이게 하는거로만 해도 되나? 아 그것도 바꿔줘야하는구나..

    • 모든 오브젝트 파괴여부 Stack을 들고있는 것도 나쁘지 않을듯함. 이유는 텍스트 타일을 파괴시키면서 깨는 경우도 있고, Player오브젝트들도 모두 가능.

짜잔


24.04.22 수업낙서

1000개 원소 중 find탐색을 할 때 vector vs map?

직접 실행해보면 1000개따리 했을때 벡터가 항상 빠름. 한 만개이상부터나 map이 더 빠르다.
이론상 map이 빨라야하는데… 왜?

1000개중에 999번째를 찾을 경우 vector에게는 최악의 상황인데도 벡터가 더 빨랐음.

  • 우리 눈에 보이는 코드는 진짜 코드가 아님. 어셈블리로 된 게 진짜 코드임. 어셈블리 코드가 실제 연산량을 보기 가장 쉬운 방법이다. ⇒ 이게 소프트웨어적인 이유이다.
    소프트웨어적으로는 맵의 코드가 더 빠른 게 맞다. 찾으러 들어가는 횟수만 생각하면 map이 빠르다. 소프트웨어적인 설계빼문에 맵이 느렸던 걸까? 아님. map이 더 이성적인게 맞다.

==보다 >연산이 더 빠름. ==는 비트 끝까지 가서 확인함, >는 1이먼저나오는 곳이 큰거임. 벡터가 느려야함..

  • 하드웨어적 이유

    캐시는 연산을 하기 전에(cpu에 보내기 전에) 보관을 해놓는 위치. CPU는 같다(=)를 가지고 있음. 연산자의 왼쪽과 오른쪽을 채우기 위해서 RAM에 있는 값을 바로 CPU로 가져오는 개념이 아님. Ram에서 캐시로, 캐시에서 CPU로 보내는 개념이다.

근데 캐시로 옮길 때 값만 옮기는 게 아니고 특정 지역을 통째로 뜯어서 가져온다. 캐시의 크기에 따라 달라진다.

예를 들어 1과 3을 비교해야할 때 가져온 값 중에 1을 왼쪽값으로서 CPU에 넘긴다. 그리고 내부에서 오른쪽 값인 3이 있는지 찾아본다. 없으면 기존 캐시데이터를 지우고 3이 있는 부분을 또 가져와야 함.

cpu가 요구하는 값을 한 번에 가져오는 것을 적중률이라고 한다. 캐시 적중률이 높을수록 당연히 빠르다.
한마디로 캐시히트가 벡터가 더 잘되는 차이네.!

  • int v1 = ++a;
    int v2 = a++;
    둘 중에 ++a가 더 빠름.
profile
일단 시작해보자

0개의 댓글