문제

친구들과 나는 게임을 개발하고 싶었습니다. 모든 언어는 할 것입니다. 나는 몇 년 동안 C에서 프로그래밍 해 왔지만 전에는 게임을 한 적이 없습니다. 우리 중 하나는 SDL을 조금 알고 있습니다. Python+Pygame을 배우는 것은 또한 좋은 변명 일 것입니다.

우리는 우리의 게임이 '독립형'이되기를 바랍니다. 독립형으로는 대부분의 사용자 (적어도 Linux, Mac 및 Windows)가 패키지 외에 다른 것을 수동으로 다운로드하여 설치할 필요가 없습니다. 설치가 누락 된 종속성을 자동으로 처리해도 괜찮습니다. 패키지에 이진이 포함 된 경우 Linux의 크로스 컴파일을 사용하여이를 생성 할 수 있기를 원합니다.

우리는 어떻게 프로젝트를 패키지하고 구조화해야하며, 어떤 언어가 가장 적합합니까?

도움이 되었습니까?

해결책

전에 게임을 프로그래밍하지 않았다면 Python과 Pygame으로 시작하는 것이 좋습니다. 파이썬 자체는 이미 프로그래머라면 배우기가 매우 쉽기 때문에 너무나도 도약하지 않습니다.

Pygame을 사용하면 "접착제"를 쓰거나 창 관리 및 사운드 설정과 같은 평범한 저수준 세부 사항을 처리하는 데 거의 시간을 소비하지 않습니다. 거의 즉시 게임 로직을 프로그래밍 할 것입니다. blit왼쪽과 오른쪽. 또한, 게임의 프로토 타입을 실행하는 것이 매우 쉬워서 기계공을 실험 할 수 있습니다. 몇 시간 만에 간단한 작은 사이드 스크롤 플랫 포머를 프로그래밍했습니다.

성능

Pygame을 사용한 Python의 성능은 일반적으로 간단한 게임에 적합하지만 "Smooth -Scrolling"게임은 특히 Linux에서 성능이 저하 될 수 있습니다 (적어도 내 경험에서 -적어도 - pygame.display.update() 문자 그대로 Linux에서 프레임 당 15-30ms를, Cheapo Intel 그래픽이있는 Windows에서는 4-5를 차지했지만 2 년 전이었고 Linux Intel 드라이버는 늦게 개선되었습니다). 또한 물리/수학이 많은 코드가있는 경우 psyco X86 컴퓨터의 32 비트 파이썬으로 제한되지만 큰 속도를 높일 수 있지만 (경우에도 20% -200%).

대부분의 게임 논리가 해결되면 성능이 여전히 불만족 해지면 C 및 SDL로 전환 할 수 있습니다. 이미 게임 논리를 작성 했으므로 SDL을 직접 처리하는 데 집중해야합니다. Pygame은 내부적으로 SDL을 사용하므로 번역은 비교적 간단해야합니다.

Opengl

불행히도, 위는 2D 게임을 작성하는 경우에만 해당됩니다. Pygame은 기본적으로 OpenGL에 대한 도움이 없습니다. 그러나 나는 할 것이다 ~ 아니다 OpenGL로 게임 프로그래밍을 시작하는 것이 좋습니다. 처음에는 이해하기 어려울 수 있으므로 두 가지 문제를 한 번에 제시 할 것입니다. 먼저 게임 논리/물리/AI/등을 얻는 방법을 알아 내려고합니다. 일하고, 당신은 OpenGL을 이해하기 위해 고군분투하고 있습니다. 결국 OpenGL을 배우는 것이 가치가 있지만 시작하지는 않습니다. 기본부터 시작하여 거기에서가는 것이 좋습니다.

교차 플랫폼 고려 사항

교차 플랫폼 문제에 이르기까지 - py2exe (Windows의 경우) 및 py2app (MAC의 경우) 종속성을 포함하는 개별 실행 파일 (Python Interpreter 및 Pygame 포함)을 구축 할 수 있습니다. 그러나 Linux 환경에서 실행 파일을 구축 할 수 있다고 생각하지 않습니다 (아마도 몇 분 동안 Windows/Mac 컴퓨터를 빌릴 수 있어야합니다). Linux의 경우 Pygame을 종속성으로 나열하는 .deb를 배포 할 것입니다 (Psyco는 필요한 경우 권장 또는 제안).

다른 팁

살펴보십시오 오그레; 그것은 뒤의 엔진입니다 횃불. Windows, Ubuntu, MacOS 및 iPhone을 지원합니다.

당신은 또한 읽고 싶을 수도 있습니다 Gamasutra: 그들의 기사, 인터뷰, 심도있는 사후 및 사후 분석은 게임 개발 프로세스에서 매우 흥미로운 통찰력을 제공합니다.

엔진을 포함한 전체 게임을 구축하거나 기존 게임 엔진을 구축하려는 경우에 따라 크게 달라집니다. 전체 엔진을 구축에는 훨씬 더 많은 오버 헤드와 노력이 포함되어 있지만 많은 경험을 제공합니다.

이제 게임 엔진을 만들려면 작업의 언어는 C ++입니다 (C도 작동 할 수 있습니다. C ++가 더 좋습니다)

빌드 관리 도구의 경우 cmake 훌륭한 옵션이며 여러 플랫폼에서 빌드를 관리하며 설치자를 작성하고 필요한 라이브러리를 설치할 수도 있습니다.

라이브러리가 진행되는 경우 대부분의 문제는 SDL에 의해 해결 될 것이며, 특히 유쾌하지는 않지만 비디오 (OpenGL), 창, 입력 및 오디오와 인터페이스하는 크로스 플랫폼의 두통을 관리합니다. 게임에서 사용하려면 여전히 OpenGL을 배워야하며 SDL은 초기화 및 설정 만 처리합니다.

Python을 사용하기 위해서는 Python에 의해 발생하는 오버 헤드의 탄약이 프레임 속도로 먹기 시작하기 때문에 게임이 간단하지 않으면 (2D 또는 무거운 물리학 사용이없는 간단한 3D) 권장하지 않습니다. 가볍고 스크립팅하는 언어를 위해 루아 확실히 최고이며 간단하고 유연하며 빠릅니다. 간단한 솔루션을 원한다면 통합하려면 사용하십시오. Luabind, 그러나주의하십시오! 컴파일 시간을 완전히 죽일 수 있기 때문에 사용하는 위치를 매우 선택적으로하십시오!

QT에서 개발하는 것이 좋습니다 ... QT는 대부분의 휴대 성 문제 자체를 처리 할 것입니다 ... 따라서 걱정할 필요가 없으며 모바일을 포함한 대부분의 플랫폼을 지원합니다 ... 및 QT도 게임에 대한 기본 지원이 매우 좋습니다 (그래픽, UI, 사운드 컨트롤 ..)

QT에 내장 된 응용 프로그램을 참조하십시오

나는 당신의 게임이 3D라고 가정합니다. 그렇다면 OpenGL이 필요합니다. C이므로 구문에 익숙하지만 OpenGL이 유한 상태 기계라는 사실 때문에 접근 방식은 약간 다릅니다. 이 주제에 대해 더 많이 여기.

OpenGL은 기본적으로 모든 플랫폼에 내장되어 있으므로 단일 전체 화면 창만 시작하고 OpenGL이 도면을 처리해야합니다. 교차 편집을 위해서는 권장합니다 wxwidgets 그것은 C ++입니다. 각 플랫폼에서 컴파일하는 응용 프로그램의 창 초기화를위한 단일 코드를 작성할 수 있습니다.

wxwidgets도 있습니다 파이썬 바인딩 파이썬으로 가기로 결정한 경우 필요한 경우에도 필요합니다. pyopengl.

캐주얼 게임의 경우 플래시를 추천합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top