배울만한 좋은 오픈 소스 게임은 무엇입니까? [닫은]


15

오픈 소스 게임의 소스 코드를 다운로드하여 게임 아키텍처에 익숙해 지려고합니다. 읽기 쉽고 이해하기 쉬운 소스 코드가있는 게임에 대해 아는 사람이 있습니까?

편집 : 약간의 생각 후에 데스크탑 또는 2D 그래픽이있는 Andriod 전화에서 재생할 수있는 게임을 만들고 싶습니다.


7
오픈 소스 인 대부분의 게임은 항상 쉽게 이해할 수없는 크고 오래된 프로젝트, 다양한 이유로 오픈 소스 된 상업용 프로젝트 또는 실제로는 재생 가능한 상태가 아닌 완료되지 않은 게임입니다. 또한, 게임 유형과 언어에 약간의 아키텍처가 사용됩니다. 어떤 종류의 게임을 배우고 싶고 어떤 언어를 알고 있습니까? (튜토리얼 솔직히 여기에 더 좋은 옵션이 될 수 있음)
thedaian

@thedaian 나는 자바, C ++, C, 자바 스크립트, 파이썬 알
jumpnett


나는 적어도 나를 위해 더 나은 thedaian에 동의합니다. 아주 좋은 기사와 책, 튜토리얼이 많이 있습니다. 올바른 것을 고르려면 시간이 걸리지 만 나중에 코드를 작성하는 이유 를 알고 소스의 품질 (종종 냄새가 나는)을 인식 할 수 있기 때문에 나중에 시간을 절약 할 수 있습니다. 이식성을 원한다면 C / C ++를 사용하지만 해당 플랫폼의 경우 Java로 잘 수행 할 수 있습니다.
Pablo Ariel

1
커뮤니티 위키?
Jari Komppa

답변:


2

어떤 유형의 게임을 요구하는지 잘 모르겠지만 C ++로 작성된 OpenTTD 라는 오픈 소스 게임이 있습니다. 좋은 샘플로 사용할 수 있다고 생각합니다.

이 게임을 독특하게 만드는 몇 가지 기능 :

  • 전략 게임입니다.
  • 인터넷과 로컬 네트워크를 통해 멀티 플레이어를 지원합니다.
  • 구성 파일 (원시 텍스트 파일에서 생성됨)을 통해 다른 언어로의 번역을 지원합니다.
  • 내가 아는 거의 모든 플랫폼에서 컴파일됩니다.
  • 프로젝트는 아직 살아있다!
  • AI 지원 기능이 내장되어 있습니다.
  • 패치를 통해 그래픽 및 음악 데이터를 완벽하게 사용자 정의 할 수 있습니다.
  • 맞춤형 AI를 개발하기 위해 스크립팅 언어를 지원합니다. 이 게임을 위해 작성된 다른 AI도 읽을 수 있습니다.
  • 비교적 큰 프로젝트이지만 코드를 읽고 이해하기 쉽습니다.
  • SDL을 기반으로하며 그 시점부터 모든 것을 처음부터 개발했습니다.

--편집하다--

바로 오늘 처음부터 코드를 읽기 시작했습니다. 그들이 작성한 것을 이해하려면 괜찮은 C 및 C ++ 프로그래머 여야합니다 (코드가 잘 주석 처리되어 있음)! 두 언어의 구조를 사용하기 때문에 두 언어의 마스터가되어야합니다! 따라서 프로그래밍 기술에 대해 확신이 없으면 해당 코드에 가까이 가지 않아도됩니다! 그것은 내가 본 것 중 가장 더러운 코드입니다! (그리고 나는 더러운 코더 자신이지만 다른 것입니다!)

이제 슈퍼 툭스 코드 확인을 제안 할 수 있다고 생각 합니다. 그것은 플랫 포머 게임 (슈퍼 마리오와 마찬가지로)이며 지금까지 코드는 정말 깨끗해 보입니다 (1.3 마일스톤을 확인했습니다). 그들은 그 코드에 주석이 있지만 혼란 스러울 수있는 장소에 대해서만 설명합니다.


OpenTTD는 훌륭한 게임이지만 좋은 학습 프로젝트라고 생각하지 않습니다. 대부분은 어셈블리에서 리버스 엔지니어링되었으며 여전히이를 반영하는 코드 섹션이 있습니다. 게다가, 그것은 단순히 거대한 프로젝트이며, 아마도 "게임 아키텍처 학습"프로젝트를 시작하기에는 너무 많은 것일 것입니다.
thedaian

@ thedaian 당신은 그렇게 말할 수도 있지만 매번 새로운 무언가를해야한다는 것은 단지 그들의 코드로 쓰여진 것을 읽습니다. 지금까지는 읽을 가치가있는 가장 읽기 쉬운 오픈 소스 게임이라고 생각합니다!
Ali1S232

또한 자신의 코드를 마지막으로 확인한 때 나는 확실하지 않다 그러나 그들은 버전 1.0.0 이후를 청소했습니다
Ali1S232

2

아마도 좋은 접근 방식은 좋아하는 게임을 골라 그와 같은 오픈 소스 게임을 확인하는 것입니다. 오픈 소스 게임 클론의 목록은 아마도 마지막 단계, 많은 도움이 될 수.


1

Quake 3 와 같은 메인 스테이가 있거나 조금 더 간단한 것을 원한다면 (2D로) 인디 게임 Gish를보십시오 . 둘 다 OpenGL을 사용하고 크로스 플랫폼도 있습니다.

그러나 Gish는 지저분한 부분에 조금 있습니다.


1

먼저 3D 파이프 라인, 물리학, AI 등 어떤 유형의 학습에 관심이있는 게임 아키텍처에 초점을 맞추는 것이 좋습니다.

게임 프로그래밍의 좋은 예에 대한 일반적인 요청으로 공간 침입자 gl 은 깨끗한 코드와 열린 gl 게임 플레이 및 인터페이스를 가지고 있고 일을 상당히 단순하게 유지하기 때문에 극복하기 가 어렵다고 생각 합니다 .

건배


우주 침략자 gl windows 만 있습니까? 현재 내 PC에 창이 설치되어 있지 않습니다. 내가 그것에 접근 할 수있는 것이 아니라 편리하지 않다는 것입니다.
jumpnett

1

코드를 읽는 것이 유용 할 수 있지만 도메인의 초보자라면 아무 것도 배울 수 없습니다. 특히 Q3A 또는 OpenTTD와 같은 큰 프로젝트의 코드를 보면. 그것들은 팀 전체에서 만들어졌으며, 각자 코딩 방법이 다르고 제작 방법에 대한 아이디어가 다릅니다. 모든 것을 하나로 묶는 작은 디테일이 아니라 큰 그림 만 얻을 수 있습니다.

좋은 것으로 보일 때까지 다시 시도하고, 다시 시도하고, 헹구고, 좋은 것이있을 때까지 반복하십시오. 다른 개발자는 물건을 구현하는 방법에 대한 다른 아이디어를 의미합니다. 좋은 게임을 만든 유명한 개발자가 Carmack / Any에 의해 코딩되었다고해서 얇게 썬 빵 이후 최고의 것이 아니며 다른 구현이 더 명확하고 빠를 수 있습니다.


1

당신이 할 수있는 가장 중요한 것 중 하나는 즐기는 게임을 선택하는 것입니다. 이를 통해 관심을 유지하는 데 도움이되고 코드 자체가 플레이어 관점으로 어떻게 변환되는지 더 잘 알게됩니다.

게임의 크기에 관계없이 해당 게임을 선택하면 모든 코드 줄이 어떻게 작동하는지 파악할 필요가 없습니다. 그 조각을 골라보세요. 예를 들어 플레이어 데이터가 저장되는 방법이나 메뉴 항목을 그리는 방법 등을 알아 봅니다.

내 이전 비트와 함께 다음에 할 수있는 일은 무언가를 변경하는 것입니다. 거대한 것 (처음에는)이 아니라 게임에서 간단하고 눈에 띄는 것입니다. 메뉴의 버튼에있는 텍스트 나 메뉴 항목을 추가하거나 손상 계산을 변경하는 것처럼 간단합니다. 어쩌면 그들이 다르게 행동해야한다고 생각했을 수도 있습니다.

게임 개발에 처음 관심이 있었을 때 저는 2D 온라인 RPG에 관심이있었습니다. 그래서 나는 온라인으로 하나의 소스를 찾았고 그것을 만들기 시작했습니다. 몇 년 전 VB6에 있던 기능을 수정하고 문제를 수정하고 버그를 수정하는 등의 작업을 해왔으며 이제는 C #과 XNA를 사용하여 게임을 처음부터 작성하고 있습니다. 나는 게임을 즐 겼기 때문에 더 나은 게임을 만들기 위해 노력하고 싶었습니다. 우연히도, 이것은 내가 gamedev가 아닌 관련 업무에서 오늘 사용하는 프로그래밍, 디버깅 및 문제 해결 기술을 많이 배웠습니다.

게임에 질문을하고 도움과 예를 얻을 수있는 모더 커뮤니티가있는 경우에도 매우 유용합니다. 그러나 다시, 그것이 존재하지 않더라도, 당신은 이미 여기 있으며 우리는 도울 준비가되어 있습니다.




0

스크롤 게임 개발 키트 (2)는 당신이 실제로 2D 게임을 만들고 코드를 작성하지 않고 GUI를 사용하여 재생할 수 있습니다. 또한 게임의 프레임 워크 / 엔진을 나타내는 프로젝트에 포함 된 코드를보고 편집 할 수도 있습니다. 코드의 일부는 스프라이트를 배치하는 위치와 생성 한 맵에 따라 코드가 생성되지만 대부분의 코드는 GUI를 통해 노출됩니다. 그러나 프로젝트를 생성 한 다음 Visual C # Express에서 결과 파일을 열면이 코드도 표시됩니다. 전체 프로그램 (IDE) 자체도 오픈 소스입니다. OpenTK 라이브러리 (C #에서 OpenGL과의 인터페이스에 사용)에서 빌드되며 오픈 소스이기도합니다.


나는 그것을 살펴볼 것이지만, 나는 프로그래머이기 때문에 코드를 작성하는 것은별로 중요하지 않다.
jumpnett
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.