2014-01-20 3 views
3

libgdx를 사용하여 게임을 개발하기 시작했습니다. 그것은 실제로 두 번째 시도입니다. 왜냐하면 내가 처음 시도했을 때 나는 libgdx에 대한 모욕을 알지 못했기 때문입니다. 내 첫 번째 시도에서 나는 그것에 논리와 질감과 배우 서브 클래스했다. 그 다음 나는 Gustavo Steigerts tutorial을 읽기 시작했다. 그리고 나는 그가 논리와보기를 분리하려고 노력한다는 것을 알았다. 나는 똑같은 것을 시도했으나 뷰는 크기와 위치에 대한 정보를 가진 내 액터 서브 클래스이므로 논리의 일부인 충돌 감지를 수행해야합니다. 또한 Google에서 검색하면 Scene2d에서 MVC를 수행 할 수 없다는 것을 알게됩니다. MVC를 사용하여 scene2d 게임을 구현하는 방법이 있습니까? 아니면이 patern을 무시하고 액터를 확장하는 하나의 클래스에서 모델과 뷰를 가져야합니까?libgdx scene2d에서 MVC 사용

답변

3

이것은 주로 의견을 바탕으로 한 질문이지만 scene2d 및 MVC 패턴과 관련하여 매우 자주 제기되는 질문입니다.

일반적으로 Model-View-Controller 패턴이 시도하는 것과 같은 별도의 우려가 항상 있습니다. scene2d에서는 Actor이 이미 act()이고 draw() 메서드이기 때문에 쉽지 않습니다.

제 생각에는 게임 세계 (엔터티)를 항상 모델로 만들어야합니다. Player 일 것이고 Rocket 일 수도 있고 Bunny 클래스/액터/엔티티 일 수도 있습니다. 그들은 스스로 알아야 할 모든 것을 알아야합니다. 이것은 엔터티가 "파트"로 만들어지고 외부 시스템에 의해 제어되는 Entity-System-Framework의 반대입니다.

모든 것을 함께 유지하면 대부분 한 번에 필요한 모든 것을 갖추고 있기 때문에 대부분 융통성있게 유지됩니다. 게임 플레이가 변경되어 엔티티도 변경 될 수 있습니다. 엔티티가 너무 커지면 PlayerModel, PlayerControllerPlayerRenderer과 같이 여러 부분으로 나누어서 서로 참조해야하며 act()render() 방법의 항목을 트리거 할 수 있습니다.

+0

나는 실제로 자기가 가지고있는 스피드와 무기를 저장하는 적과 같은 게임 객체 클래스를 가지고있다. 그럼 난 이미지를 확장하는 클래스 GraphicObject 있습니다. 적의 경우 GraphicObject를 확장하는 GraphicEnemie 하위 클래스가 있으며 그 자체로는 enemie 유형의 객체에 대한 참조가 있습니다. act() 메서드에서 나는 그래픽을 적 개체의 속력에 따라 이동시킵니다. 당신은 이것이 더 좋은 방법이라고 생각합니까, 아니면 더 많은 적 (Enemies) 등의 내용을 더 추가한다면 복잡할까요? – Springrbua

+0

그것은 나를 위해 작동하는 것 같습니다. 당신이 더 많은 적을 소개 할 때, 그것은 다른 것들을 의미합니다, 그것은 또한 새로운 적 클래스를 초래할 것이고 당신은 당신의 디자인을 분리 할 것입니다. 100 % MVC 접근 방식을 원할 경우 Entity 시스템 프레임 워크 (예 : http://gamadu.com/artemis/tutorial.html)를 살펴보십시오. 그러나 익숙해지기가 쉽지 않으며 디자인이 더욱 복잡해집니다. 하지만 그건 당신의 다른 옵션입니다 (scene2d없이) – noone

+0

나는 scene2d에 많이 감사한다고 생각합니다! – Springrbua

관련 문제