너가 총알 클래스를 만들었겠지? Bullet bullet같은걸 할꺼 아냐 이걸 선언할때 시간이 좀 걸려
익명(118.41)2019-03-09 02:16
답글
그런데 아마 너가 스페이스바를 누를때 Bullet b하고 백터나 링크드리스트에 넣는거 같은데
익명(118.41)2019-03-09 02:16
답글
맞어 bullet 을 스페이스를 누를 떄 생성시켜서 리스트에 집어넣었어
1234(180.67)2019-03-09 02:18
답글
도중에 렉이 걸리지 않게 하려면 처음에 미리 만들어 놓고 스페이스바 누르면 만들어 놓은 객체의 발사 함수를 호출하는 식으로 짜봐
익명(118.41)2019-03-09 02:18
답글
근데 로직을 어떻게 짜야할 지 모르겠어 ㅜㅜ 지금은 발사할 때 생성하고 update를 계속시켜주는 함수에서 iterator로 접근해서 list에 들어있는 bullet들에 대한 동작을 하게 했는데 .. 처음부터 다 만들어놓는다면 스페이스를 누를 떄 어떤식으로 총알을 가져와서 동작을 하는지 ..
1234(180.67)2019-03-09 02:19
답글
너가 만들어 놓은 로직에서 제일 쉽게 수정하는거는 Bullet 클래스에 bool Fired = false; 변수 선언해놓고 스페이스바 누르면 저거 true로 바꾸고 반복문 돌릴때 조건검사해서 true인것만 발사 시키면 될듯
익명(118.41)2019-03-09 02:22
답글
list 쓸꺼면 어디까지가 발사된 총알인지 포인터 저장해서 계속 유지하면거 삽입하고, 반복문 돌려서 동작시킬때도 true인것 까지만 검사하게 하면 더 빠름
익명(118.41)2019-03-09 02:24
답글
정말 고마워용 ㅠㅠ !
1234(180.67)2019-03-09 02:31
답글
그거 때문에 복잡도 이슈가 생길일은 없고, 객체 선언이 시간이 걸리는건 케바케지 생성자에 이상한 코드 잔뜩 돌게 만들었으면 느릴 수 있는데 이 경우는 스케일 이슈라서 아님 - return 0;
커헠(msca8h)2019-03-09 02:31
답글
ㅋㅋ 빡고수님이 이거 아니랭 ㅇㅅㅇ
익명(118.41)2019-03-09 02:32
list 는 절대 안 쓰는게 거의 항상 맞다 ㅇㅇ lookup 때 캐시미스나서 성능 작살남. 빠른 경우 거의 없다고 보면 됨 - return 0;
커헠(msca8h)2019-03-09 02:29
답글
렉 걸리는건 벡터 재할당 때문이다. vector.reserve 라는 기능 있으니 찾아봐라. - return 0;
커헠(msca8h)2019-03-09 02:30
답글
list 가 느리다는 얘기면 lookup 때문에 느린거임 O(N) 접근 - return 0;
커헠(msca8h)2019-03-09 02:30
답글
vector로는 못썼어요 .. 이유는 모르겠는데 .. list iterator돌릴 때는 문제 없던게 vector를 쓰니까 ctrlvalidheappointor(block) 이런 문구 뜨는 오류가 ㅜㅜ
1234(180.67)2019-03-09 02:33
답글
어디에 인덱스 접근 버그 있나보네. operator[] 말고 .at() 로 접근해봐라 - return 0;
커헠(msca8h)2019-03-09 02:34
답글
캐시미스가 그거임? 공간지역성?
익명(118.41)2019-03-09 02:34
답글
ㅇㅇ - return 0;
커헠(msca8h)2019-03-09 02:34
답글
제가 스페이스 바 누르면 bullet을 포인터로 만들고 list에 pushback 해줬었거든용 ? vector로 바꾸니까 안됐구 .. 이건 reserve써서 해결을 했는데 혹시 vector랑 list는 erase 하는 법이 다른건가요?
1234(180.67)2019-03-09 02:37
답글
erase 함수 쓰는 방법은 똑같은데 그냥 니가 어디 버그 낸거의 증상이 그렇게 간접적으로 나타는걸꺼다. reserve 해서 문제가 해결된건 이전에는 벡터가 데이터랑 크기가 딱 맞게 들어있다가 인덱스 넘어가니까 터진건데, 이제는 여유 메모리를 더 땡겨놔서 거기 쓰레값 읽어서 그런거다 ㅇㅅㅇ - return 0;
커헠(msca8h)2019-03-09 02:39
답글
.at 써서 버그부터 잡아라 - return 0;
커헠(msca8h)2019-03-09 02:39
답글
답글 감사합니다 그런데 at으로 버그잡으란 말을 잘 이해 못하겠어요 저는 벡터에 []로 접근한 적이 없거든요?? Pushback만 하고 iterator 돌린거라.. 어떻게 잡는지 ㅜㅜ
1234(180.67)2019-03-09 02:43
답글
그게 문제인건데 휘발성님 말대로 iterator ㅇㅇ. 벡터는 재할당되면 주소 뒤죽박죽돼서 기존에 뽑아놓은 iterator 들은 다 무효됨 - return 0;
커헠(msca8h)2019-03-09 03:26
벡터 내용물 지우면 iterator 무효화될수도 있지않나 기억이 가물가물하네 - dc App
휘발성(reduxx)2019-03-09 02:46
보통은 그 팩토리 기법인가 그걸루 만들지않나, 여튼 머 중요한점은
생성자체는 이미 끝내놓고 움직이고 판정내는 부분만 계산하면서 충돌끝나거나 특정 판정(화면밖을 나간다던가)하면은 원래 풀로 돌려넣거나,
반복사용 할 수 있게끔 만드는게 필요하지않을까
총알을 혹시 발사할때 객체 생성하니?
내 생각도 요거 때문인거 같은데.
킹린이인데 저것때문인줄도 알고 게임도 만들고 빡고수농
space 누르면 발사하게 했어
아 글쓴이가 아니군 ㅋ
그니까 스페이스 누를때 총알 객체를 만드냐는건데
첨에 로딩시간? 같은거 주고 총알 객체 만들어놓고
인스턴스 할당해놓고
필요할때 만들어 놓은거 써서 돌려봐 게임은 안만들어봤지만 이렇게 하면 될꺼같은데
너가 총알 클래스를 만들었겠지? Bullet bullet같은걸 할꺼 아냐 이걸 선언할때 시간이 좀 걸려
그런데 아마 너가 스페이스바를 누를때 Bullet b하고 백터나 링크드리스트에 넣는거 같은데
맞어 bullet 을 스페이스를 누를 떄 생성시켜서 리스트에 집어넣었어
도중에 렉이 걸리지 않게 하려면 처음에 미리 만들어 놓고 스페이스바 누르면 만들어 놓은 객체의 발사 함수를 호출하는 식으로 짜봐
근데 로직을 어떻게 짜야할 지 모르겠어 ㅜㅜ 지금은 발사할 때 생성하고 update를 계속시켜주는 함수에서 iterator로 접근해서 list에 들어있는 bullet들에 대한 동작을 하게 했는데 .. 처음부터 다 만들어놓는다면 스페이스를 누를 떄 어떤식으로 총알을 가져와서 동작을 하는지 ..
너가 만들어 놓은 로직에서 제일 쉽게 수정하는거는 Bullet 클래스에 bool Fired = false; 변수 선언해놓고 스페이스바 누르면 저거 true로 바꾸고 반복문 돌릴때 조건검사해서 true인것만 발사 시키면 될듯
list 쓸꺼면 어디까지가 발사된 총알인지 포인터 저장해서 계속 유지하면거 삽입하고, 반복문 돌려서 동작시킬때도 true인것 까지만 검사하게 하면 더 빠름
정말 고마워용 ㅠㅠ !
그거 때문에 복잡도 이슈가 생길일은 없고, 객체 선언이 시간이 걸리는건 케바케지 생성자에 이상한 코드 잔뜩 돌게 만들었으면 느릴 수 있는데 이 경우는 스케일 이슈라서 아님 - return 0;
ㅋㅋ 빡고수님이 이거 아니랭 ㅇㅅㅇ
list 는 절대 안 쓰는게 거의 항상 맞다 ㅇㅇ lookup 때 캐시미스나서 성능 작살남. 빠른 경우 거의 없다고 보면 됨 - return 0;
렉 걸리는건 벡터 재할당 때문이다. vector.reserve 라는 기능 있으니 찾아봐라. - return 0;
list 가 느리다는 얘기면 lookup 때문에 느린거임 O(N) 접근 - return 0;
vector로는 못썼어요 .. 이유는 모르겠는데 .. list iterator돌릴 때는 문제 없던게 vector를 쓰니까 ctrlvalidheappointor(block) 이런 문구 뜨는 오류가 ㅜㅜ
어디에 인덱스 접근 버그 있나보네. operator[] 말고 .at() 로 접근해봐라 - return 0;
캐시미스가 그거임? 공간지역성?
ㅇㅇ - return 0;
제가 스페이스 바 누르면 bullet을 포인터로 만들고 list에 pushback 해줬었거든용 ? vector로 바꾸니까 안됐구 .. 이건 reserve써서 해결을 했는데 혹시 vector랑 list는 erase 하는 법이 다른건가요?
erase 함수 쓰는 방법은 똑같은데 그냥 니가 어디 버그 낸거의 증상이 그렇게 간접적으로 나타는걸꺼다. reserve 해서 문제가 해결된건 이전에는 벡터가 데이터랑 크기가 딱 맞게 들어있다가 인덱스 넘어가니까 터진건데, 이제는 여유 메모리를 더 땡겨놔서 거기 쓰레값 읽어서 그런거다 ㅇㅅㅇ - return 0;
.at 써서 버그부터 잡아라 - return 0;
답글 감사합니다 그런데 at으로 버그잡으란 말을 잘 이해 못하겠어요 저는 벡터에 []로 접근한 적이 없거든요?? Pushback만 하고 iterator 돌린거라.. 어떻게 잡는지 ㅜㅜ
그게 문제인건데 휘발성님 말대로 iterator ㅇㅇ. 벡터는 재할당되면 주소 뒤죽박죽돼서 기존에 뽑아놓은 iterator 들은 다 무효됨 - return 0;
벡터 내용물 지우면 iterator 무효화될수도 있지않나 기억이 가물가물하네 - dc App
보통은 그 팩토리 기법인가 그걸루 만들지않나, 여튼 머 중요한점은 생성자체는 이미 끝내놓고 움직이고 판정내는 부분만 계산하면서 충돌끝나거나 특정 판정(화면밖을 나간다던가)하면은 원래 풀로 돌려넣거나, 반복사용 할 수 있게끔 만드는게 필요하지않을까
고마워요 ㅎㅎ .. 적용해볼게요!!