libgdx를 사용하여 게임을 개발하기 시작했습니다. 그것은 실제로 두 번째 시도입니다. 왜냐하면 내가 처음 시도했을 때 나는 libgdx에 대한 모욕을 알지 못했기 때문입니다. 내 첫 번째 시도에서 나는 그것에 논리와 질감과 배우 서브 클래스했다. 그 다음 나는 Gustavo Steigerts tutorial을 읽기 시작했다. 그리고 나는 그가 논리와보기를 분리하려고 노력한다는 것을 알았다. 나는 똑같은 것을 시도했으나 뷰는 크기와 위치에 대한 정보를 가진 내 액터 서브 클래스이므로 논리의 일부인 충돌 감지를 수행해야합니다. 또한 Google에서 검색하면 Scene2d에서 MVC를 수행 할 수 없다는 것을 알게됩니다. MVC를 사용하여 scene2d 게임을 구현하는 방법이 있습니까? 아니면이 patern을 무시하고 액터를 확장하는 하나의 클래스에서 모델과 뷰를 가져야합니까?libgdx scene2d에서 MVC 사용
3
A
답변
3
이것은 주로 의견을 바탕으로 한 질문이지만 scene2d 및 MVC 패턴과 관련하여 매우 자주 제기되는 질문입니다.
일반적으로 Model-View-Controller 패턴이 시도하는 것과 같은 별도의 우려가 항상 있습니다. scene2d에서는 Actor
이 이미 act()
이고 draw()
메서드이기 때문에 쉽지 않습니다.
제 생각에는 게임 세계 (엔터티)를 항상 모델로 만들어야합니다. Player
일 것이고 Rocket
일 수도 있고 Bunny
클래스/액터/엔티티 일 수도 있습니다. 그들은 스스로 알아야 할 모든 것을 알아야합니다. 이것은 엔터티가 "파트"로 만들어지고 외부 시스템에 의해 제어되는 Entity-System-Framework의 반대입니다.
모든 것을 함께 유지하면 대부분 한 번에 필요한 모든 것을 갖추고 있기 때문에 대부분 융통성있게 유지됩니다. 게임 플레이가 변경되어 엔티티도 변경 될 수 있습니다. 엔티티가 너무 커지면 PlayerModel
, PlayerController
및 PlayerRenderer
과 같이 여러 부분으로 나누어서 서로 참조해야하며 act()
및 render()
방법의 항목을 트리거 할 수 있습니다.
관련 문제
- 1. Scene2D에서 화면을 변경하는 방법 libGDX
- 2. libGDX Scene2D에서 작업 중지 또는 중단
- 3. Scene2D에서 MoveToAction을 사용하여 스프라이트 배경으로 액터 이동하기
- 4. Libgdx 라이브러리에서 getSpectrum() 사용
- 5. TexturePacker2 사용/설치 libgdx
- 6. Libgdx 전환 스프라이트 사용
- 7. LibGDX with Scene2D에서 버튼을 누를 때 어떻게 계속 오른쪽으로 계속 걸어 갈 수 있습니까?
- 8. Android Studio 1.0.2에서 libGDX 사용
- 9. Android 환경 설정에서 LibGDX 사용
- 10. Libgdx : 맞춤법 교정기 사용 안함
- 11. 화면의 일부에 쉐이더 사용 libGDX
- 12. libGDX - 화면마다 다른 InputProcessors 사용?
- 13. Scene2d에서 TouchDown 이벤트를 사용하여 액터 이동하기
- 14. libgdx
- 15. Libgdx.
- 16. Libgdx
- 17. libgdx
- 18. libGDX 글꼴 : 간단한 문자에 여러 색상 사용
- 19. Libgdx 찾기 동작을 box2d에서 사용 하시겠습니까?
- 20. LibGDX - 조건부로 Java 또는 Android 클래스 사용
- 21. 기존 Android 프로젝트에서 LibGdx 라이브러리를 사용 하시겠습니까?
- 22. libGDX 데스크탑에서 JRuby 사용 runnable JAR
- 23. LibGDX : 루핑 할 때 SpriteBatches 사용
- 24. libgdx 프로젝트 안드로이드 클래스 사용 방법?
- 25. MVC - 변수보기? MVC 패턴을 사용
- 26. MVC - MVC with WCF 사용
- 27. 액터의 색상 및 알파 변경이 Scene2D에서 작동하지 않습니다.
- 28. Scene2D에서 CheckBox를 사용하지 않도록 설정하여 클릭에 반응하지 않는 방법
- 29. MVC 3 Quartz.Net 사용
- 30. ASP.NET MVC WCF 사용
나는 실제로 자기가 가지고있는 스피드와 무기를 저장하는 적과 같은 게임 객체 클래스를 가지고있다. 그럼 난 이미지를 확장하는 클래스 GraphicObject 있습니다. 적의 경우 GraphicObject를 확장하는 GraphicEnemie 하위 클래스가 있으며 그 자체로는 enemie 유형의 객체에 대한 참조가 있습니다. act() 메서드에서 나는 그래픽을 적 개체의 속력에 따라 이동시킵니다. 당신은 이것이 더 좋은 방법이라고 생각합니까, 아니면 더 많은 적 (Enemies) 등의 내용을 더 추가한다면 복잡할까요? – Springrbua
그것은 나를 위해 작동하는 것 같습니다. 당신이 더 많은 적을 소개 할 때, 그것은 다른 것들을 의미합니다, 그것은 또한 새로운 적 클래스를 초래할 것이고 당신은 당신의 디자인을 분리 할 것입니다. 100 % MVC 접근 방식을 원할 경우 Entity 시스템 프레임 워크 (예 : http://gamadu.com/artemis/tutorial.html)를 살펴보십시오. 그러나 익숙해지기가 쉽지 않으며 디자인이 더욱 복잡해집니다. 하지만 그건 당신의 다른 옵션입니다 (scene2d없이) – noone
나는 scene2d에 많이 감사한다고 생각합니다! – Springrbua