게임 만드는 구조에 관한 질문인데
아래와 같은 메인 루프가 있으면
GameLoop
{
if( 충돌 )
{
꽝;
}
}
게임에서는 꽝 한다고 그 객체를 바로 소멸 시킬 순 없잖아. 그 과정을 사람이 봐야되기 때문에
sprite 여러개를 붙이든 투명도를 낮추든, 뭔가 서서히 변하면서 없어져야 하잖아.
여기서 질문이 생기는데
크게 두가지로 구현을 할 수 있잖아
GameLoop
{
if( 충돌 )
{
꽝;
}
if(꽝 했는가)
{
서서히 사라지는 에니메이션코드;
주절 주절 주절 주절;
sdfasdf;
fdafadf;
}
}
이 방법과
GameLoop
{
if( 충돌 )
{
꽝; //
소멸시키는 에니메이션을 위한 쓰레드 생성;
}
}
newThread
{
소멸 처리;
}
이렇게 크게 나누면 대충 이렇게 되는데... 또 거시기 한게. 쓰레드로 넘긴다고 해도 실제 게임에서 여러개의 쓰레드가 만들어질텐데
쓰레드를 어떻게 관리 하느냐... 그리고 어느 객체인지 어떻게 받을것이냐, 등등의 문제가 있을거잖아. (windows 같은 경우엔 LPVOID 로 오지만, 그러한 방법론을 묻는게 아냐.)
각 scene 마다 gameloop 가 있는 상태인데 지금.
전체적인 게임구조에 대한 공부를 하고 싶어. 가장 좋은 방법은 탄탄한 게임엔진을 하나 두고 분석하는건데 그건 너무 지금 현실성 없고 ㅡㅜ
동생 가르친다 치고 댓글좀 냄겨줘~~ 추천서적도 괜찮고 추천문서도 좋고...
OOP 로 해라 OOP로...
기본적으로 요즘은 렌더링 루프 하나 따로 돌리고 로직 루프 하나 따로 돌리는 방식으로 많이 가고 로직루프 내에서 각 객체별로 업데이트 쳐주고 렌더링 루프에서는 각 객체별로 렌더링 돌리면 객체들이 알아서 지 상태 따라 폭발하고 소멸하는 애니메이션을 찍는거지 그런걸 굳이 컨테이너가 알 필요는 없당
충돌 이벤트 발생하면 서서히 사라지는 명령 등록, 루프에선 등록된 명령들을 쭉 실행
LazyGyu // 객체 자신이, 폭발했는데, 폭발하고 있다라는 과정을 알 필요가 없단 소리??
성대아싸 // 그 서서히 사라지는 명령 등록하는 주체가 렌더러야 아니면 객체 자신이야?
ㄴ 게임 루프가 알 필요가 없다는거 객체는 지가 무슨 상탠지 알아야지
내가 잡고 있는 개념은 렌더러는 게임구조가 갖춰지면 왠만하면 변하지 않는 그런 구조를 생각하고 있는데... 이 댓글 보면서 뭔가 헷갈리네
객체새끼가 지가 충돌된걸 알지 , 렌더러가 너무 많은 일을 하면 커플링이 심해지고 나중에 개꼬일듯
그럼 그러한 효과가 들어갈 때 마다 렌더러를 고쳐줘야해?
솔까 구조야 자기 꼴리는대로 짜기 나름이긴 한데 저렇게 게임 루프가 이것저것 직접 신경쓰기 시작하면 나중에 코드 보기 짜증나지니까..
LazyGyu 말은 그러니까 게임루프에서는 단순 파괴처리만 하고, 나머지 부가적인 눈에 보이는 효과는 렌더러가 하라는 말이죠?
제가 제대로 이해했나 모르겄네요
쓰레드 생성할 생각한 자체부터 오류다. 게임루프는 그 안에서 로직을 돌리라고 있는거지 쓰레드를 생성하라는 것이 아니다
알렉산더K // 그러한 듯.
보통 터진 시점에서 다른 오브젝트로 변환하지않나?
폭탄 경우에는 터지면 흙먼지처럼 되잖아.
생물학// ㅇㅇ.. 저도 그런방법 써왔었는데 ㅎㅎ 파티클이라던가 그냥 시체 오브젝트같은거 깔고 자신은 그냥 삭제
제거 안시켰다가 죽었는데도 공격받는 어처구니없는 상황 막으려면 또 코드 귀찮게 생겨먹어지길래 ㅠㅠ