C ++로 자체 게임 엔진을 구축 중이며 현재 사용해야 할 사용자 인터페이스를 결정하고 있습니다.
라이브러리를 사용해야합니까? 내가 직접 만들어야합니까?
C ++로 자체 게임 엔진을 구축 중이며 현재 사용해야 할 사용자 인터페이스를 결정하고 있습니다.
라이브러리를 사용해야합니까? 내가 직접 만들어야합니까?
답변:
실제로 Qt 위젯은 OpenGL과 통합 될 수 있으며 OpenGL은 Qt (QGLWidget)와 쉽게 통합 될 수 있습니다. 물론, 플랫폼 고유의 위젯은 찾고자하는 것이 아닐 수도 있지만 걱정할 필요는 없습니다. 커스터마이즈하거나, 자신을 만들거나, Qt Quick ( 통합 할 수 있어야합니다).
: 당신이 관심이 있다면, 이러한 링크를 놓치지 마세요 위젯은 세 번째 차원 입력 : WolfenQt를 하고 OpenGL을 사용하여 위젯을 가속화
당신이 직접 작성해야한다고 생각하지 않습니다. 게임 엔진을 만드는 작업 자체가 너무 커서, 사용할 수있는 좋은 라이센스를 가진 많은 라이브러리가 있고 원하는대로 수정할 수 있습니다.
게임 엔진의 경우 즉시 모드 GUI를 사용합니다. 자세한 내용은 여기 : http://www.mollyrocket.com/forums/viewtopic.php?t=134
핵심 아이디어는 구성 요소를 그리고 동시에 상호 작용을 제어하는 것입니다.
if (button(id, position, size))
{
button_was_pressed();
}
우선 Unity는 비슷한 개념을 사용합니다.
데모에서 사용되는 NVIDIA의 구현은 http://code.google.com/p/nvidia-widgets/ 에서 찾을 수 있습니다 .
개인적으로 CEGUI를 추천 합니다. 오픈 소스이고 꽤 좋습니다. 그러나 명심해야 할 것은 모든 것을 손으로 쓰면 매우 장황 할 수 있다는 것입니다.
그러나 장점에는 OpenGL과 DirectX 모두에 대한 렌더러가 있습니다. 나는 일반적으로 사용하는 템플릿 위에 VBO를 사용하여 텍스처에 직접 쓰는 템플릿 위에 올려 놓았습니다.
문제의 게임은 네트워킹 과제였습니다. 과제는 로비와 네트워크로 연결된 게임을하는 것이 었습니다. 나는 로비가 목에 통증이 있다는 것을 알고 있었기 때문에 대부분의 도서관을 골랐습니다.
대부분의 GUI 라이브러리 (Qt는 아마도 Windows 전용이 아닌 가장 인기있는 C ++ 라이브러리)의 문제는 대부분 엔진에 잘 통합되지 않는다는 것입니다. 일반적으로 GUI 앱에서 GUI 라이브러리는 기본 루프를 제어하고 콜백을 이벤트에 연결하기 만하면됩니다. 게임 엔진에서는 일반적으로 루프를 제어하고 싶기 때문에 최대한 까다로울 수 있습니다. 어쩌면 그리기 컨트롤과 대화 상자를 처리하고 전달하는 3D 컨텍스트로 처리 할 수있는 것을 찾고 있습니까? 그것들을 찾기가 훨씬 더 어려울 수 있습니다 :-/
나는 당신 자신의 글을 강력히 믿지만 다시 아주 오래된 사람입니다. 당신이 원하는 한 가지 일을하기 위해 또 다른 GUI 라이브러리와 싸우면 대부분의 게임 GUI가 상당히 사소하다는 사실에 덧붙여 MDI와 super OO 디자인에 대해 모든 것을 다룰 필요가 없다는 사실에 덧붙였습니다. 버튼에는 드래그 가능한 엄지 손가락이있는 확인란 옆의 작업 표시 줄 위로 마우스를 가져 가면 강조 표시되는 스크롤보기가있을 수 있습니다. 내가 생각하는 다른 사람들에 대한 다른 뇌졸중.
조사 할 가치가있는 옵션 중 하나는 WebKit을 사용하여 사용자 인터페이스를 렌더링하고 CSS / HTML / Javascript로 모든 UI를 수행하는 것입니다.
여기에 공개 소스 구현 (Berkelium)이 있고 비공개 소스 상업 묵시 (Awesomium)가 있습니다.
IUP 제안-휴대용 사용자 인터페이스 : http://www.tecgraf.puc-rio.br/iup/
Lua 프로그래밍 언어로만 사용했지만 사용하기가 매우 쉽습니다. 그것은 C, LED 및 Lua 풍미에서만 제공되지만 쉽게 래퍼를 만들 수 있습니다.
게임 프로젝트에서 개인적으로 CEGUI를 사용하고 있으며 매우 강력한 솔루션입니다. 문제는 때로는 거의 톤을 바꾸는 파일을 조금만 바꾸는 것처럼 느껴진다는 것입니다.
나는 그것을 사용하지 않았지만 libRocket은 모든 라이센스 비용을 없애고 완전히 무료로 전환했습니다. 이 lib의 멋진 부분은 html / css 구문으로 작성한다는 것입니다. http://librocket.com
Windows 용 게임을 개발하는 경우 Win32 API를 사용하는 것이 좋습니다. 일반 창 컨트롤을 사용하십시오 (ATL / WTL 라이브러리 사용을 권장합니다).
이 기술이 첫 번째 Unreal Tournament 게임에서 사용되고 공개적으로 공개 된 헤더 (mod 제작자 용)를 살펴 보았습니다.
이 작업의 주요 이점 중 하나는 전체 Windows UI 인프라를 마음대로 사용할 수있을뿐 아니라 키보드 반복 속도, 마우스 감도, 더블 클릭 속도 및 기타 사항에 대한 사용자의 기본 설정을 유지하는 것입니다. 또한 규칙을 준수하면 인터페이스가 빠르고 깜박임이 없습니다.
단점은 여전히 자신의 그래픽과 효과를 적용 할 수 있도록 소유자가 그릴 수 있도록 Windows 컨트롤을 서브 클래스 화하는 코드를 작성해야한다는 것입니다.
그냥 아이디어로 버리십시오.