게임 프레임워크(환경 표현 프로그래밍)

게임상에 어떤 문제가 생길경우 그 문제가 서로 분리될 필요가 있습니다.

가령, 화면보호기가 작동되어서 리소스를 손실하였을경우 게임씬의 유니트들이

그것을 알필요가 없습니다.


그 밖의 레벨에서 처리될필요가 있죠.

게임에서 각 유니트들의 문제, 윈도의 문제, DX의 문제등은 서로가 분리되어 동작하는것이

좋습니다.

그래서, 그 클래스의 목적별로 나누어서 처리를 하게 되어있습니다.

클래스의 내용이 몇개 없을지라도요.

 


제가 게임을 만들면서, 중요하게 생각된부분이 게임씬안에서 각개체들이 서로를 어느정도 알아야 하는 문제입니다.

결론은 서로가 서로를 절대로 몰라야 합니다.

조금이라도 알게되면, 클래스간의 종속성이 생기게 되고, 그렇게 될경우 작업의 우선순위가 생겨서, 프로그래머가 2명을 넘어가면, 서로가 먼저구현하라고 떠밀게 되죠.

개체간에 서로 통신할 방법은 없습니다. 서로가 전혀 모른다는 전제하에 클래스가 만들어지니깐요.


버스비 문제를 예를 들어보죠

손님이 버스를 탈경우 버스비클래스에서 손님클래스를 호출할까? 아니면, 손님클래스에서 버스클래스를 호출할까의 문제가 됩니다.

그럴경우, 그둘중 어느클래스에서도 서로를 관여하지 않습니다.

그 둘을 포함하는 제 3의 개체에서 해결하죠. 손님클래스에서 돈을 빼서, 버스클래스에 돈을 넣어줍니다.

게임씬에서 해도되고, 또다른 개체에서 그 둘을 처리해도 됩니다.


저는 이것을 환경표현프로그래밍이라고 이름지었습니다. ^^

각클래스는 그것을 포함하는 클래스에 영향을 받는 식으로 프로그래밍하는것이죠.


이 내용에서 가장중요한 내용은, 개체간의 통신방법입니다.

개체가 어떤행위를 하면, 메시지가 생기고, 그 메시지에 따라 그것을 포함하는 개체나 게임씬에서 해당 메시지를 처리하죠.

직접적으로 통신을 할수없으며, 어떤일이 발생했다고 메시지를 상위로 날리면, 그것을 상위에서 메시지를 받고 다른 개체의 멤버함수를 호출합니다.


리소스 접근에 있어서는 전역으로 접근이 가능합니다.

게임의 모든 객체, 텍스트, 대화상자등과 엔진의 인스턴스등은 전역으로 접근가능하며,

같은 프로젝트내의 클래스들끼리만 직접 메시지 보다는 결과를 리턴하는 식입니다.

 

출저: 자유게시판 - 37. 프레임 워크

날자고도의 탄막슈팅 강좌의 한부분이다.
정말 도움이 많이 된 강좌이다.
진짜 강추 

이 글을 공유하기

댓글

Designed by JB FACTORY