답변:
탈주
걱정할 상태가 많지 않기 때문에 쉬운 게임 (브릭 값의 배열입니다-벽돌 색이 하나만 있으면 플래그 배열 임), AI가 없으며 AI를 수행해야합니다. 공이 바운스되도록 약간의 물리학.
혼자 하는 여러 가지 놀이
규칙은 Breakout보다 약간 복잡하며 인터페이스는 매우 다릅니다. 게임을 구현하는 다양한 방법에 대해 생각하게합니다. 즉, 한 게임에서 작동하는 것이 반드시 다른 게임에서 사용되는 것은 아닙니다.
팩맨
이것은 약간의 AI 작업을하기 때문에 좋습니다. 귀신이 플레이어를 따라가는 것을 (그러나 너무 좋지는 않습니다-플레이어가 기회를 갖기를 원합니다) 신속하게 구현할 수 있으며 친구와 가족에게 조정할 수있는 재미있는 작은 게임이 있습니다 (긍정적 인 피드백은 항상 시작할 때 좋은 일).
초기 비디오 게임에서 영감을 얻으면 구현하기가 비교적 쉬운 수많은 아이디어를 찾을 수 있습니다. 또한 아주 간단한 무언가를 복사하기 때문에 매우 간단한 아트 워크와 사운드를 피할 수 있습니다. 이를 통해 게임 루프를 시작하고 실행하는 방법, 픽셀을 화면으로 가져 오는 방법, 사운드 재생, 점수 유지, 플레이어 입력을 게임에 입력하는 방법 등 기본적인 사항에 집중할 수 있습니다.
어떤 게임을 먼저 선택하든 문제가되지 않습니다. 빠른 결과를 얻을 수있는 간단한 항목을 선택하고 다음 날로 이동하여 다른 게임을 만들 수 있도록하십시오. 그리고 또 다른. 그리고 또 다른-더 많이 만들수록 더 많이 밀고 결국에는 복잡한 게임을하기 전에 알게됩니다.
초보자 프로그래머는 실제로 작성하고 싶은 가장 간단한 게임부터 시작하는 것이 좋습니다 . 매트 릭스 (Matt Rix)가 언급했듯이 게임 대 데모 의 큰 부분은 크레딧, 메뉴, 플레이 테스트, 높은 점수, 일시 중지, 플레이 테스트, 난이도, 깨끗한 게임 상태 전환, 플레이 테스트하는 것 등. 그 물건을 넣는 데 적어도 절반 시간이 걸리며 재미는 없습니다. 그렇지 않습니다. 당신이 개념을 사랑하고 정말 동기를 부여하지 않는 그래서, 당신은 포기하고 게임이되기 전에 이동합니다 게임 .
RPG를 작성하려면 가장 간단하고 관리하기 쉬운 RPG 개념을 파악 하여 수행 하고 수행하십시오. 공상 과학 사수 나 공포 테마의 플랫 포머 등을하고 싶을 때도 마찬가지입니다. 모든 일을 마친 후에도 끝내기를 원하지만 실제로 끝내기 전에 수십 시간의 일을 계속하고 있습니다.
"날개를 벌 수있는"가장 좋은 게임은? 당신이 완성한 것. 나는 당신이 작성한 반-완료 PONG / 브레이크 아웃 / 갈라가 / 테트리스 데모의 수에 상관없이 실제로 완성 된 게임을 출시 할 때까지 게임 개발자가 아닙니다.
게다가, 그 40 살짜리 게임의 또 다른 버전을 플레이하기를 원하는 사람은 없으며, 게임을 작성하는 데있어 요점은 사람들이 게임 을하는 것입니다.
나는이 사다리를 얼마 전에 TIGsource에 게시했습니다. 그것은 매우 기본적인 것에서부터 매우 복잡한 것까지 시작합니다.
학습 프로그래밍 프로그래밍의 가장 중요한 규칙 : 학습 프로그래밍은 어렵습니다. 학습 게임 디자인은 어렵습니다. 좋은 게임 아트 나 오디오를 만드는 법을 배우는 것은 어렵습니다. 이 모든 것들을 동시에 시도하는 것은 실패의 비법입니다. 한 번에 하나씩 배우십시오.
Corollary : 디자인, 예술 및 사운드가 이미 완료된 게임을 프로그래밍합니다. 독창적 인 게임이 아닌 복제품을 만드십시오.
수업 시간에는 항상 다음 게임을 순서대로 시작하는 것이 좋습니다.
1) 테트리스. 예술은 사각형으로되어 있으며, 심지어 전체 klutz조차 Microsoft Paint에서 그릴 수 있습니다. 소리가 필요하지 않습니다. 프로그래밍은 비교적 간단하지만 몇 가지 중요한 사항이 필요합니다. 내부 게임 상태와 화면에 그려진 내용의 차이점을 이해합니다. 화면에 그릴 수있는 기간 (아마도 스프라이트 및 블리 팅 포함); getch () 또는 scanf ()를 사용하는 대신 사용자 입력을 실시간으로 받아 들일 수 있어야합니다.
2) 탈주 / 아카 노이드. 아트는 여전히 사각형으로 표시되며 여전히 소리가 필요하지 않습니다. 공이 부드럽게 움직이고 튀어 나와야하기 때문에 테트리스의 모든 기본 개념과 일부 기본 충돌 감지 및 2D 물리를 사용합니다.
3) 그라디우스 / R- 타입. 이를 위해 프리웨어 타일셋을 찾을 수 있습니다. 여기에서는 배경이 스크롤되므로 페이지 넘기기 및 이중 버퍼링과 같은 기술을 사용하여 보이는 화면의 경계를 벗어나는 그래픽 메모리 작동 방식에 대해 조금 더 배워야합니다. 또한 역동적 인 적과 탄환이 생성되는 경향이 있으므로, 자신을 쫓아 온 후 청소하는 법을 배워야합니다 (즉, 화면을 떠난 적과 총알을 제거하여 게임에서 체처럼 메모리가 누출되지 않도록하십시오).
4) Super Mario Bros. 이전 스크롤 프로젝트와 유사하지만 스크롤이 플레이어가 제어하고 자동이 아니라는 점만 다릅니다. 또한 마지막 프레임에서 몇 픽셀 위에 있고 다음 프레임에서 몇 픽셀 아래로 이동하려고하므로 바닥과 쓰러지지 않는 것처럼 중력과 그와 관련된 모든 재미있는 충돌 요소를 처리해야합니다. ). 또한 중력은 조건부입니다. 플레이어와 일부 적에게 영향을 주지만 일반적으로 플랫폼이나 떠 다니는 동전 또는 실제 세계와는 다른 것은 아닙니다.
이 4 가지를 모두 할 수 있다면 원하는 2D 게임을 할 수있을 것입니다. 모든 도구가 있습니다. 3D 게임을 만들고 싶다면 ... 2D를 배우는 것이 훨씬 쉬우 며 수학을 심도있게 이해할 필요가없고 어쨌든 2D 자료를 이해해야하기 때문에 2D를 먼저 배우십시오. 그에 익숙해지면 Torque 또는 Unity와 같은 라이브러리 또는 원래 Doom 및 Quake와 같은 오픈 소스 게임과 같은 기본 3D 도구로 작업을 시작하십시오.
행운을 빕니다!
이제 이것은 실제로 좋은 질문입니다. 나는 당신이 어디에 있는지 모른다. 그래서 나는 하늘을 향해 스윙 할 것이고, 당신이 당신의 인생에서 한 줄의 코드를 쓰지 않았다고 가정한다. 문구를 남용하기 위해 코의 어느 부분이 당신을 화나게하는지 잘라내십시오.
나는 실제로 당신이 요구 한 것과 약간 다른 질문에 대답 할 것이라고 생각합니다. 그리고 나는 당신이 현장에서 요구 한 질문을 만족시키기 위해 예를 줄 것입니다. 내가 그렇게하는 이유는 약간이지만 관점에서 큰 차이가 있다고 생각합니다.이 게임이 디자이너에게 가져 오는 사고 방식만큼 중요한 특정 게임은 아닙니다.
사람들이 자신의 사고 방식과 마음과 간을 먹고 강력한 힘을 얻기 위해 다양한 프로그래밍 언어를 배워야한다는 것을 알고 있습니까? 그것에 대한 진정한 진실이 있습니다-첫 번째 순수하거나 거의 순수한 프로그래밍 언어 후에, 명령형 언어에서도 훨씬 더 잘 정의되어 있기 때문에 부작용이 거의없는 무료 함수를 작성하게 될 것입니다. 그 형태가 아닌 언어로도 더 좋습니다. 하스켈, ml / ocaml / smlnj, formulaONE, c ++ 템플릿 등 어떤 언어인지는 중요하지 않습니다. 기계 근처의 견고한 프로그래밍 언어를 처음 배우면 크기 유형 추상화에 대해 다시 배울 것입니다. 선언적이거나 제약적인 언어를 처음 배우면 임의 도구로서의 경계에 대해 배우게됩니다. 역 추적 검색 언어를 처음 배우면 Ia를기도하는 법을 배우게됩니다! 야! C'thulhu F'tagn Nagn !, 그리고 우리는 마음과 간을 먹기 위해 돌아 왔고, 삶의 원이 성취되었습니다.
게임 디자인도 다르지 않습니다. 특정 언어와 병행하여 특정 게임을 배워야 할 필요는 없지만 언어 특성 군과 같은 사고 방식을 다루는 상징적 인 대표 게임을 배워야합니다. 또한 간과 마음을 많이 먹는 것도 있습니다. 후추 크래커를 가져옵니다.
여기의 개그는 (적어도 내가 본 것처럼) 많은 주제 목록을 다루고 싶다는 것입니다. 캐릭터 시트에서 실력을 시험하는 것과 같습니다. 주어진 상황을 처리 할 수있는 더 많은 메커니즘을 자신에게 제공하고 있습니다. 그렇습니다. 레벨이 가능하지만 보드 전체에서 가능한 한 많은 포인트를 가지고 있다는 것은 하나를 사용할 때 처음부터 시작하지 않으며 어떤 전술이 가능한지 알고 있다는 것을 의미합니다 당신이 확장 할 수 있습니다.
보세요.
먼저 치아를 자르고 싶습니다. 또한 새로운 플랫폼을 대상으로하는 방법을 배우거나 기억 상실증에서 회복 할 때 유용합니다. 이것들은 빠르지 않고 빠르기위한 것입니다.
순서대로 :
일단 다운하면 플랫폼을 대상으로 준비가되어 학습이 시작될 수 있습니다.
이들은 특정한 순서가 아닙니다. 적합하다고 생각되면 재정렬 할 수 있습니다. 나는 각각에 대해 몇 가지 예를 들겠 다. 그러나 그것들은 규범 적이 지 않다. 다른 게임이 동일한 경험을 제공하고 일련의 수업에 참여할 수있을 정도로 작은 경우 자유롭게 교체하십시오. 실질적인 이유로 화면 렌더링에 능숙하고 비교적 빠르게 입력하는 것이 좋습니다. 당신은 그들 모두를 많이 사용할 것입니다. 추상화 클래스를 작성하기 전에 몇 가지 게임을 기다리십시오. 당신이 하지 않는 순진 추상화에 잡힐 싶어요.
... 어. 나는 지루했다.
테트리스
매우 일반적인 게임, 많은 오픈 소스 클론이 갇혀 있으면 찢어 버릴 수 있습니다. 2D 그래픽, 입력 처리, 스코어링 등의 기본 사항을 교육합니다.
그런 다음이 독창적 인 아이디어를 가져 와서 스핀에 넣으십시오. 대학에서 컴퓨터 그래픽 수업을 위해 Tetris 의 3D 버전을 작성하여 3D 그래픽 / opengl의 기초를 배웠습니다 .
GameDev.net 에는 게임 개발에 대해 점진적으로 배우기 위해 게임 진행을 권장 하는 좋은 기사가 있습니다. 목록에서 내가 가장 좋아하는 조언은 실제로 이러한 게임을 연마하는 것입니다. 해제 가능한 상태로 완전히 마무리합니다.
목록은 다음과 같습니다 (이 중 일부는 다른 답변으로 제공됨).
나는 모든 사람들을 독점으로 시작하고 싶습니다. 저는 보통 Brett Schuchert의 독점 "코드 카타" 를 연습의 기초로 사용하지만, 그에 많은 것을 추가합니다. 내가 이것을 정말로 좋아하는 데는 몇 가지 이유가 있습니다.
좋은 코딩 방법 (디자인 패턴, TDD, SOLID, 지속적인 통합 등)에 깊은 관심을 갖고 있으며 개발자가이 연습을 수행 할 때 많은 제약이 따릅니다.
거의 모든 사람들이 독점의 규칙을 알고 있으며, 하루 만에 전체 게임을 완료 할 수 있습니다. 이것은 새로운 개발자들에게 빠른 승리를주고 실제로 참여를 유도합니다.
초기 요구 사항은 키보드 컨트롤로 시작하지만 나중에 마우스 컨트롤에 대한 요구 사항을 추가합니다. 이를 통해 개발자는 몇 가지 사항, 기존 코드를 리팩토링하는 방법, 구체적인 클래스 대신 인터페이스로 시스템의 일부를 프로그래밍하는 방법, 더 나은 / 적절한 추상화, 단위 테스트 대상, 단위 테스트 대상이 아닌 요소, 단위 테스트 대상이되는 이유 및 대상에 대해 생각하게됩니다. 좋은 단위 테스트를 만듭니다.
때로는 더 정교한 AI를 연결하고 때로는 그렇지 않습니다. 때때로 우리는 슈트 및 사다리와 같은 약간 더 복잡한 논리를 가진 다른 보드 게임과 협력합니다. 때때로 우리는 보드 게임에서 완전히 벗어나 포커 게임이나 블랙 잭을합니다.
저에게있어 가장 중요한 부분은 사람들이 빠른 승리를 거두고 좋은 프로그래밍 표준을 따를 때 소프트웨어를 얼마나 유연하게 만들 수 있는지 보는 것입니다. 이 연습은 자신감을 매우 빠르게 만듭니다. 때로는 경험이 많은 개발자가 더 복잡한 프로젝트를 중단하거나 방금 배운 새로운 기술을 연습하기 위해 이러한 작업을 직접 수행하는 것이 좋습니다 (계량기 법칙).
당신의 모험을 선택하십시오
모험 책을 고르는 것과 비슷한 게임을 만들어서 프로그래밍을 시작한 친구로부터이 팁을 얻었습니다 . 기본적으로 다음과 같은 출력을 가진 간단한 텍스트 어드벤처 게임입니다.
You are standing in a forest clearing in the middle of the night. You hear
some wolves howl in the distance. Should you:
a) make camp for the night
b) go further north
> _
이러한 게임을 만들면 게임 루프, 기본 콘솔 입력 및 기본 스크립팅을 배우도록 지시해야합니다. 게임을 작성 하는 데 그래픽 엔진 이 필요하지 않기 때문에 초보자도 쉽게 구현할 수 있습니다 . 고급 초보자는 아마도 스크립팅 엔진을 작성했을 것입니다.
초보 프로그래머와의 경험에서 진행은 일반적으로 다음과 같이 보입니다.
다른 답변에는 몇 가지 좋은 제안이 있지만, 나는 다음과 같이 투표를 던지기를 원합니다. 너무 다루기 어려운 것으로 시작하십시오.
탁구가 좋은 예입니다.
목표는 : 게임 디자인과 규칙 세트를 너무 죽게 만들어서 배우고있는 새로운 것 (언어, 플랫폼, API)을 배우고 끊임없이 할 필요가없는 새로운 것을 배우는 데 집중할 수 있습니다. 게임이 어떻게 작동하는지 알아 내기 위해 휴식을 취하십시오.
일단 당신이 가면, 탁구가 처음에는 홍당무보다 약간 더 복잡하다는 것을 알게 될 것입니다. (나는 남자 프로그래밍을 가르치고 있으며 그는 pong을 학습 프로젝트로 사용하고 있습니다. 우리는 몇 가지 기능을 추가했으며 이제는 멋진 기능을 모두 수행하는 방법을 학습함으로써 학습에서 프로그램으로 산만 해졌습니다.)
가 / 줄 다른 사람에게 판매 할 준비가 될 때까지 앱 # 1 모든 방법을 통해 수행하면, 그때 뭔가 좀 더 복잡한 (테트리스, 모험 또는 무엇이든 당신이 좋아하는)하지만,을, 새로운 기술을 배우기 시작하려면 확인 당신이 간단하게 뇌사를 프로그램하는 것.
다른 예 :
그러나 다시 말하지만 너무 쉬운 방법으로 시작하면 실제로 무언가를 완성하고 되돌아보고 관련 내용을 볼 수 있습니다. 언어 / 플랫폼 / SDK / 엔진으로 하나의 앱을 작성하는 것과 ZERO 앱을 작성하는 것의 차이점은 HUGE 입니다. 1과 2 또는 2와 5의 차이는 훨씬 적으므로 더 큰 단계를 수행 할 수 있지만 0에서 1 단계는 아주 작은 단계가됩니다. 생각보다 커집니다!
Flappy Bird
유사합니다. 프로페셔널 프로그래머로서, 오후의 일입니다. (주말, "좋은"일을하는 주말), 다른 사람에게 프로그램을 가르치면서, 실제로 많은 합병증이 있다는 것을 알게되었습니다. 다시 말하지만, 하나 는 0 보다 훨씬 더 많은 경험 이며, 일단 가지고 있다면, 앞으로 나아가는 방법에 대해 훨씬 더 나은 아이디어를 얻게 될 것입니다.
이 웹 사이트를 확인하십시오 : 12 컴퓨터 과학 게임 프로젝트 아이디어
이러한 게임 중 일부는 다른 사람들이 말한 내용을 포함합니다.
그러나 다음과 같은 다른 게임에 대해서도 이야기합니다.
또한 각 게임마다 어려움을 느끼기 때문에 무엇을 먼저 시도해야하는지에 대한 의미를 갖습니다 (따라서 게임을 어떻게 다루어야하는지에 대한 계획).
게임이나 소프트웨어를 작성하는 데있어 가장 어려운 부분은해야 할 일을 파악하는 것입니다. 당신은 절대적으로 사양이 필요합니다! 그것은 기존 게임의 복제를 만드는 데있어 재미있는 부분입니다. 스펙은 이미 존재합니다. 귀하의 사양은 "제품은 반드시 다른 제품이하는 모든 일을 수행해야합니다."이며, 다른 게임의 사본이 있으면이를 쉽게 확인할 수 있습니다.
당신이 파악하고 나면 무엇을 당신이 알아내는, 할 필요가 어떻게 그것을 할 당신이 유능한 프로그래머라면 정말 어려운 일이 아니다. 숙련되거나 숙련 된 프로그래머를 의미하지는 않습니다. 그것은 당신이하려고하는 대부분의 일을하는 법을 이미 알고 있음을 의미합니다. 그러나 추상화로 생각하는 방법을 이해하고 프로그래밍의 기본이되는 문제 해결 및 논리적 사고 기술을 갖추어야합니다. 그렇게 할 수 있다면 무엇이든 할 수 있습니다.
나는 대부분의 사람들이 정말로 간단한 것을 작성함으로써 게임 작성법을 배우려고하는 것에 대해 동의하지 않는다. 보상은 노력에 직접 비례합니다. 정말 간단한 게임을 작성하여 게임을 작성하는 법을 배운다면, 결국에는 간단한 게임을 작성하는 방법 만 알면 좋을 것입니다.
다른 한편으로, 압도적 인 것으로 시작하면 결코 끝내지 못할 것입니다. 따라서 심각한 문제를 해결하는 데 다소 어려움이있는 것으로 시작하십시오. 2D 콘솔 스타일 RPG 또는 사이드 스크롤 플랫폼을 구축하면 실제 게임 프로그래밍 개념을 배울 수 있습니다.
실제로 현재 역량이 무엇인지에 달려 있습니다. 프로그래밍에 익숙하지 않다면 사람들이 제안한 특정 게임 중 하나를 선택하십시오. 그렇지 않으면 어떤 종류의 게임을 통해 경험을 잘 활용할 수 있을지 생각해야합니다.
첫 게임을 시작했을 때 게임 개발 경험이 없었지만 몇 년 동안 엔터프라이즈 / 비즈니스 앱 개발을하고있었습니다. 첫 번째 게임 프로젝트는 턴제 전략 게임이었고 건축 적으로 말하면 엔터프라이즈 응용 프로그램과 다를 바가 없었습니다. 클라이언트 / 서버 시스템을 사용했으며 이중 WCF 서비스 채널을 통해 통신이 이루어졌습니다. 대부분의 플레이어 작전은 "주문"으로 대기하고 차례가 끝날 때 서버로 파견되었습니다. 모든 턴 처리는 서버에서 이루어졌으며, 그 후에 게임 유니버스 업데이트가 각 클라이언트에게 전송되었습니다.
그 첫 번째 프로젝트는 익숙한 영역에서 시작하면서 게임 개발을 시작하게했습니다. 프로젝트가 발전함에 따라 저는 게임 개발자가 아닌 엔터프라이즈 앱 개발자가 아닌 생각을 배웠습니다. 최종 결과는 꽤 잘 작동했으며 전함이나 틱택 토보다 약간 인상적이었습니다.
Moonlander 스타일 게임은 훌륭합니다 (중력, 플레이어 방향 제어 및 추력, 추력 사용시 제한된 연료). 매우 간단한 물리학을 구현 한 경험이 있고 충돌 시스템은 매우 원시적 일 수 있습니다. 걱정할 AI가 없으며 가장 중요하게 재미와 중독성 :)
엔티티 시스템, 적 AI, 픽업, 타일 맵, 충돌 감지, 스코어링 등이 필요하기 때문에 Gauntlet과 같은 것. 그것은 모든 것을 얻었지만 압도적 인 방식은 아닙니다.
그것은 당신이 이미 가지고있는 정규 프로그래머로서의 어떤 기술에 달려 있습니다. 수학이 필요합니까? 당신의 그래픽 지식? 둘 다 랩이 있습니까?
일반적으로 Tetris와 Breakout도 제 두 스타터가 될 것이라고 생각합니다. 그보다 쉬운 것은 충분한 자극을 제공하지 않습니다. 테트리스는 데이터를 알고 레이아웃하는 방법에 대한 좋은 테스트이며, 브레이크 아웃은 간단한 수학 예제입니다. 나는 항상 사람들에게 높은 목표를 세우라고 말하고 목표는 멈춰서 해결책을 찾는 것입니다.
그 후, 하늘이 한계입니다. 다시, 높은 목표. 경사 지형, parralax가있는 플랫 포머를 사용해보십시오 .2d 기술을 편리하게 사용할 수 있습니다. 핀볼을 추가하면 (절망 준비) 수학이 향상됩니다.
거기에서 3 차원으로 가서 핵심 기술 (애니메이션, 렌더링)을 배우고 다양한 게임을 처리 할 수있는 상대적으로 잘 갖추어야합니다.