"날개를 벌 수있는"좋은 게임은 무엇입니까? [닫은]


305

좋은 게임 개발자가 되려면 게임을 만들어야한다고 생각합니다.

A로부터 프로그래머의 관점 , 당신의 손이 더러워 얻을 수있는 좋은 엔트리 레벨의 게임은 무엇입니까? 이 게임들 각각에 어떤 기술과 도전이 있습니까?

답변:


217

탈주

걱정할 상태가 많지 않기 때문에 쉬운 게임 (브릭 값의 배열입니다-벽돌 색이 하나만 있으면 플래그 배열 임), AI가 없으며 AI를 수행해야합니다. 공이 바운스되도록 약간의 물리학.

혼자 하는 여러 가지 놀이

규칙은 Breakout보다 약간 복잡하며 인터페이스는 매우 다릅니다. 게임을 구현하는 다양한 방법에 대해 생각하게합니다. 즉, 한 게임에서 작동하는 것이 반드시 다른 게임에서 사용되는 것은 아닙니다.

팩맨

이것은 약간의 AI 작업을하기 때문에 좋습니다. 귀신이 플레이어를 따라가는 것을 (그러나 너무 좋지는 않습니다-플레이어가 기회를 갖기를 원합니다) 신속하게 구현할 수 있으며 친구와 가족에게 조정할 수있는 재미있는 작은 게임이 있습니다 (긍정적 인 피드백은 항상 시작할 때 좋은 일).

초기 비디오 게임에서 영감을 얻으면 구현하기가 비교적 쉬운 수많은 아이디어를 찾을 수 있습니다. 또한 아주 간단한 무언가를 복사하기 때문에 매우 간단한 아트 워크와 사운드를 피할 수 있습니다. 이를 통해 게임 루프를 시작하고 실행하는 방법, 픽셀을 화면으로 가져 오는 방법, 사운드 재생, 점수 유지, 플레이어 입력을 게임에 입력하는 방법 등 기본적인 사항에 집중할 수 있습니다.

어떤 게임을 먼저 선택하든 문제가되지 않습니다. 빠른 결과를 얻을 수있는 간단한 항목을 선택하고 다음 날로 이동하여 다른 게임을 만들 수 있도록하십시오. 그리고 또 다른. 그리고 또 다른-더 많이 만들수록 더 많이 밀고 결국에는 복잡한 게임을하기 전에 알게됩니다.


49
브레이크 아웃 +1 많은 프로 게임 개발자들이 새로운 기술을 얻을 때마다 먼저 Breakout을 만들어서 배우게된다고 말합니다.
Jeff

2
+1 Breakout은 내가 만든 첫 번째 게임이었습니다 =). 또한 초기 비디오 게임을 다시 만드는 데 동의합니다. 자산이 아닌 개념에 중점을 둡니다.
user384918

16
@PhillC, 아니오, 분할 할 가치가 없습니다
Simurr

13
당신은 테트리스를 잊어 버렸습니다 : 그것은 내가 고등학교에서 다시 구현 한 두 번째 게임이었습니다 :)
Emiliano

2
당신 모두가 당신의 탈주에 대한 링크를 줄 수 있습니까? 나는 그 게임을 사랑하고 모든 리메이크를 시도하고 싶습니다
fent

256

초보자 프로그래머는 실제로 작성하고 싶은 가장 간단한 게임부터 시작하는 것이 좋습니다 . 매트 릭스 (Matt Rix)가 언급했듯이 게임 대 데모 의 부분은 크레딧, 메뉴, 플레이 테스트, 높은 점수, 일시 중지, 플레이 테스트, 난이도, 깨끗한 게임 상태 전환, 플레이 테스트하는 것 등. 그 물건을 넣는 데 적어도 절반 시간이 걸리며 재미는 없습니다. 그렇지 않습니다. 당신이 개념을 사랑하고 정말 동기를 부여하지 않는 그래서, 당신은 포기하고 게임이되기 전에 이동합니다 게임 .

RPG를 작성하려면 가장 간단하고 관리하기 쉬운 RPG 개념을 파악 하여 수행 하고 수행하십시오. 공상 과학 사수 나 공포 테마의 플랫 포머 등을하고 싶을 때도 마찬가지입니다. 모든 일을 마친 후에도 끝내기를 원하지만 실제로 끝내기 전에 수십 시간의 일을 계속하고 있습니다.

"날개를 벌 수있는"가장 좋은 게임은? 당신이 완성한 것. 나는 당신이 작성한 반-완료 PONG / 브레이크 아웃 / 갈라가 / 테트리스 데모의 수에 상관없이 실제로 완성 된 게임을 출시 할 때까지 게임 개발자가 아닙니다.

게다가, 그 40 살짜리 게임의 또 다른 버전을 플레이하기를 원하는 사람은 없으며, 게임을 작성하는 데있어 요점은 사람들이 게임 을하는 것입니다.


3
이 답변을 세 번 투표하고 싶습니다!
Iain

2
실제로 게임 출시에 대한 설명은 +1입니다. 게임을 시작하고 실행하는 것은 프로세스의 약 30 %에 불과합니다 (IMO). 지속적으로 역학을 반복하고 모든 것을 표현할 수 있도록 연마하고 매우 구체적인 시나리오에서만 발생하는 불쾌한 버그를 쫓아 실제로 실제로 수행해야 할 일에만 집중할 수있는 것은 다른 70 %입니다.
Dennis Munsie

1
내가 말하고 싶은 것을 말하면 +1. 내 첫 게임은 palmgadget.com/palmgo.html 이었습니다. Go 게임을 좋아하고 클럽에서 게임 을 녹화하기 위해 실제로 사용하기 때문에 가능합니다 . 먼저 "자신의 가려움을 긁어 라".
ohho

16
이 조언이 마음에 들지만 위험 할 수 있습니다. 결국,이 사고 방식은 많은 사람들이 게임 개발 포럼에 가서 "내가 한 번도 게임을 한 적이 없다. 제한된 스타터 프로젝트 중에서 즐길 수있는 게임으로 시작해야한다고 말하고 싶습니다. 테트리스를 정말 싫어한다면 그렇게하지 마십시오. 그러나 당신에게 호소하는 임의의 게임이 아니라 브레이크 아웃을하십시오.
jhocking

185

나는이 사다리를 얼마 전에 TIGsource에 게시했습니다. 그것은 매우 기본적인 것에서부터 매우 복잡한 것까지 시작합니다.

  • "숫자 추측"/ 행맨 (기본 인터페이스, 데이터베이스에서 데이터 선택)
  • 틱택 토 / 가위 바위 보 (턴 기반 게임 플레이, 상대 AI)
  • Arkanoid / Pong (충돌, 안정적인 프레임 속도, 점수, 레벨)
  • 테트리스 (데이터 구조와 게임과의 관계)
  • 1942 / 쏴 버려 (적, 총알)
  • 엔진이 플랫 포머를 수행하는 경우 간단한 플랫 포머 / 핀볼 게임 (중력 기반 충돌)
  • Bomberman / Pacman (타일 기반 이동, 복잡한 적 AI)
  • 위의 모든 유형의 2 인용 게임 (2 인용 입력)
  • Roguelike / Diablo (재고 관리, 여러 적 AI, 복잡한 게임 상태 저장 및로드)
  • Faceball / Wolfenstein 3D (기본 3D 이동 및 렌더링)
  • 네트워크 턴제 게임 (기본 네트워킹)
  • Gimmicky 3D 3 인칭 플랫 포머 (물리, 복잡한 3D 움직임)
  • 네트워크 실시간 게임 (클라이언트-서버 동기화, 지연)
  • MMORPG (영구 세계)

7
여기서 배우고 자하는 것을 더 잘 설명 할 수 있습니다. 간결한 설명은 그다지 설명 적이 지 않거나 도움이되지 않습니다.
SpoonMeiser

57
마지막이지만 MMORPG는 더 나아가 야한다고 생각합니다. 멋진 목록. +1
は る と

6
Pacman 이후 전체 사다리 측면이 무너지는 것으로 생각되지만 훌륭한 목록입니다. 그 시점에 당신은 가서 어떤 종류의 게임을 할만큼 충분히 알고 있습니다. Wolfenstein을 개발하기 전에 Diablo를 개발할 필요는 없다고 생각합니다. 팩맨까지 모든 것을 순서대로해야합니다.
jhocking

5
"지속적인 세계"는 이전 옵션의 MMORPG 간의 차이를 과소 평가합니다.
Malabarba

1
비 MMORPG에서도 "영구적 세계"를 처리 할 수 ​​있습니다 (예 : 악성).
ashes999

64

학습 프로그래밍 프로그래밍의 가장 중요한 규칙 : 학습 프로그래밍은 어렵습니다. 학습 게임 디자인은 어렵습니다. 좋은 게임 아트 나 오디오를 만드는 법을 배우는 것은 어렵습니다. 이 모든 것들을 동시에 시도하는 것은 실패의 비법입니다. 한 번에 하나씩 배우십시오.

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 도구로 작업을 시작하십시오.

행운을 빕니다!


39

이제 이것은 실제로 좋은 질문입니다. 나는 당신이 어디에 있는지 모른다. 그래서 나는 하늘을 향해 스윙 할 것이고, 당신이 당신의 인생에서 한 줄의 코드를 쓰지 않았다고 가정한다. 문구를 남용하기 위해 코의 어느 부분이 당신을 화나게하는지 잘라내십시오.

나는 실제로 당신이 요구 한 것과 약간 다른 질문에 대답 할 것이라고 생각합니다. 그리고 나는 당신이 현장에서 요구 한 질문을 만족시키기 위해 예를 줄 것입니다. 내가 그렇게하는 이유는 약간이지만 관점에서 큰 차이가 있다고 생각합니다.이 게임이 디자이너에게 가져 오는 사고 방식만큼 중요한 특정 게임은 아닙니다.

사람들이 자신의 사고 방식과 마음과 간을 먹고 강력한 힘을 얻기 위해 다양한 프로그래밍 언어를 배워야한다는 것을 알고 있습니까? 그것에 대한 진정한 진실이 있습니다-첫 번째 순수하거나 거의 순수한 프로그래밍 언어 후에, 명령형 언어에서도 훨씬 더 잘 정의되어 있기 때문에 부작용이 거의없는 무료 함수를 작성하게 될 것입니다. 그 형태가 아닌 언어로도 더 좋습니다. 하스켈, ml / ocaml / smlnj, formulaONE, c ++ 템플릿 등 어떤 언어인지는 중요하지 않습니다. 기계 근처의 견고한 프로그래밍 언어를 처음 배우면 크기 유형 추상화에 대해 다시 배울 것입니다. 선언적이거나 제약적인 언어를 처음 배우면 임의 도구로서의 경계에 대해 배우게됩니다. 역 추적 검색 언어를 처음 배우면 Ia를기도하는 법을 배우게됩니다! 야! C'thulhu F'tagn Nagn !, 그리고 우리는 마음과 간을 먹기 위해 돌아 왔고, 삶의 원이 성취되었습니다.

게임 디자인도 다르지 않습니다. 특정 언어와 병행하여 특정 게임을 배워야 할 필요는 없지만 언어 특성 군과 같은 사고 방식을 다루는 상징적 인 대표 게임을 배워야합니다. 또한 간과 마음을 많이 먹는 것도 있습니다. 후추 크래커를 가져옵니다.

여기의 개그는 (적어도 내가 본 것처럼) 많은 주제 목록을 다루고 싶다는 것입니다. 캐릭터 시트에서 실력을 시험하는 것과 같습니다. 주어진 상황을 처리 할 수있는 더 많은 메커니즘을 자신에게 제공하고 있습니다. 그렇습니다. 레벨이 가능하지만 보드 전체에서 가능한 한 많은 포인트를 가지고 있다는 것은 하나를 사용할 때 처음부터 시작하지 않으며 어떤 전술이 가능한지 알고 있다는 것을 의미합니다 당신이 확장 할 수 있습니다.

보세요.

먼저 치아를 자르고 싶습니다. 또한 새로운 플랫폼을 대상으로하는 방법을 배우거나 기억 상실증에서 회복 할 때 유용합니다. 이것들은 빠르지 않고 빠르기위한 것입니다.

순서대로 :

  1. 화면 제어. 블루 스크린은이 점에서 훌륭합니다. 왜냐하면 Microsoft가 되겠다고 믿을만한 강력한 이유가 있기 때문입니다.
  2. 입력 검증. Fooscreen (여기서 foo는 파란색, 아래쪽은 빨간색 등). 모든 키를 확인하십시오. 더 많은 색상이 있거나 더 중요한 것을 위해 크림슨을 저장해야하는 경우 4 색지도를 사용할 수 있습니다.
  3. 텍스트 및 스프라이트 렌더링. 입력 유효성 검사도 있으므로 타일 메모리 게임은 나쁜 생각이 아닙니다.
  4. 타이머. 마리오 클론이나 아르카 노이드를위한 시간.
  5. 소리와 음악. 마리오 클론을 향상시킵니다. 별로.

일단 다운하면 플랫폼을 대상으로 준비가되어 학습이 시작될 수 있습니다.

이들은 특정한 순서가 아닙니다. 적합하다고 생각되면 재정렬 할 수 있습니다. 나는 각각에 대해 몇 가지 예를 들겠 다. 그러나 그것들은 규범 적이 지 않다. 다른 게임이 동일한 경험을 제공하고 일련의 수업에 참여할 수있을 정도로 작은 경우 자유롭게 교체하십시오. 실질적인 이유로 화면 렌더링에 능숙하고 비교적 빠르게 입력하는 것이 좋습니다. 당신은 그들 모두를 많이 사용할 것입니다. 추상화 클래스를 작성하기 전에 몇 가지 게임을 기다리십시오. 당신이 하지 않는 순진 추상화에 잡힐 싶어요.

  • 생기. 거의 모든 것이 애니메이션 스프라이트를 요구할 수 있습니다. 프로그래머 아트라도 벨트 아래에 독립 애니메이션 엔진을 설치하십시오. 타일이 충분한 간단한 퍼즐 게임 만들기.
  • 복잡한 점수. 날개에 다섯 마리의 적을 모두 줍니까? 보너스. 세 개의 펀치를 연속으로 착륙 하시겠습니까? 보너스. 총알을 잃지 않고 전체 레벨을 통과합니까? 큰 보너스.
  • 길 찾기. 많은 게임들이 이것을 필요로하지만, 타워 방어 게임은 가장 단순합니다. 이전에 해본 적이 없다면 너비 우선 및 깊이 우선으로 시작할 수 있지만 적어도 한 번은 A * from scratch (NO COPIED CODE)를 구현할 때까지 완료되지 않습니다.
  • 적의 행동. 멍청한 자동 행동은 마리오가 다룰 것이지만, 반응적인 행동도 중요합니다. 이것은 전술 게임이나 로그 라이크를 만드는 좋은 변명입니다. (경고 : 당신은 남은 생애 동안 도적처럼 일할 것입니다.)
  • 다이나믹 2D 조명. 이것은 도적 같은 글을 쓰는 좋은 이유이기도합니다. 아크 기반 섀도 캐스팅은 밴딩 및 분리를 보는 중요한 방법이며, 이는 많은 데이터 구조에 중요합니다.
  • 2D 물리학. 이것은 많은 수준의 세부 사항에서 수많은 게임에서 나타납니다. 매우 단순화 할 수있는 플랫 포머 (mario-ish)를 사용해보십시오. 동일하게 단순화 될 수있는 탱크 게임 (타락한 지구); 그리고 결국 N Ninja와 같은 게임으로 각도, 운동량 등을 조절할 수 있습니다 (축 정렬 경계 상자 충돌 시스템을 사용하면 매우 간단합니다.) 물리학과 충돌은 매우 밀접한 관련이 있습니다.
  • 충돌 감지. 그리드 Arkanoids 및 Mario 클론과 같은 엄청나게 간단한 사례가 있습니다 .N Ninja와 같은 보통 복잡한 사례 및 샌드 박스 물리 게임과 같은 실제로 복잡한 사례 (놀라운 기계, BreakQuest와 같은 현대적인 arkanoids 등) 많은 경우에 AABB 와 같은 것이지만 수학에 관심이 있다면 실제로 완전한 것을 구현하는 것이 유용 할 수 있습니다. 최소한 APE 또는 Box2D와 같은 완전한 라이브러리에 익숙해 지십시오.
  • 게임 플레이 만족도의 위험 / 보상 관계. 간단한 주사위 게임 (50 년대부터 "Skunk"라는 게임을 파헤쳐 라)과 risk-path (생명, 캔디 랜드) 보드 게임은이를 통해이를 배우는 간단한 빠른 방법의 훌륭한 예입니다.
  • 역학의 표현적인 변화. 몇 가지 규칙을 세운 다음 규칙을 완전히 바꾸는 법을 배우십시오. 커스텀 데크 카드 게임은 이것으로 작업하기에 좋은 방법입니다. Dvorak 데크와 Mille Bornes, Rage 및 Uno와 같은 실제 게임을 살펴보고 자신만의 게임을 만드십시오. 그들은 비슷해지지 않습니다.
  • 생성 된 컨텐츠. 간단한지도 기반 전략 게임, 로그 라이크 및 일부 종류의 퍼즐 게임은이를 수행하는 좋은 방법입니다. 일반적으로 콘텐츠를 생성 한 것으로 알려지지 않은 일종의 게임 인 경우 보너스 포인트.
  • 스타일. 망치지 마십시오. 이것은 큰 문제입니다. 게임을 만든 다음 완전히 다른 4 개의 게임이되도록 스킨하십시오. 정말 다릅니다. 어린이 게임도 하나. (생각해보세요 : Mega Man은 지옥으로의 마법사 모험, 또는 X-Men의 도적, 또는 ...으로 완벽하게 이해됩니다.) 이제 네 그룹의 사람들이 각각의 게임에서 1 점을 얻도록하십시오. 그 후, 다음 경기에서 시계 반대 방향으로, 반지 주위 등에서 점수를 매 깁니다. 주제와 사전 기대치에 따라 점수가 얼마나 급격히 변하는 지 확인하십시오.
  • 플레이어 계획 시퀀스 만들기. 퍼즐 게임은 이것에 대해 가장 깔끔한 방법입니다.
  • 자원 관리
  • 업그레이드
  • 시간 압력 크 랭킹

... 어. 나는 지루했다.


11
훌륭한 답변입니다. 정말 실망스러운 끝입니다. 이것을 다시 방문하고 어떻게 든 결속하여 결속력있는 결말을 줄 수 있다면 놀랍습니다.
Ricket

1
피날레를 위해 간 요리 지침은 어떻습니까? giantitp.com/comics/oots0738.html
Cyclops

4
이것은 게임 프로그래밍에 대한 게시물로 환상적으로 위장한 인생의 교훈입니다.
sdasdadas

30

테트리스

매우 일반적인 게임, 많은 오픈 소스 클론이 갇혀 있으면 찢어 버릴 수 있습니다. 2D 그래픽, 입력 처리, 스코어링 등의 기본 사항을 교육합니다.

그런 다음이 독창적 인 아이디어를 가져 와서 스핀에 넣으십시오. 대학에서 컴퓨터 그래픽 수업을 위해 Tetris3D 버전을 작성하여 3D 그래픽 / opengl의 기초를 배웠습니다 .


2
세가 사람이라면 "열";)
Andrew Russell

큐 테트리스 테마 음악 ...
Nick Bedford

3
qntm.org/hatetris (좋아요, 테마 음악이 없지만 연결하고 싶었습니다 ...)
user384918

1
@bloots 와우, 그것은 악하다
Bryan Denny


25

GameDev.net 에는 게임 개발에 대해 점진적으로 배우기 위해 게임 진행을 권장 하는 좋은 기사가 있습니다. 목록에서 내가 가장 좋아하는 조언은 실제로 이러한 게임을 연마하는 것입니다. 해제 가능한 상태로 완전히 마무리합니다.

목록은 다음과 같습니다 (이 중 일부는 다른 답변으로 제공됨).

  1. 테트리스
  2. 탈주
  3. 사이드 스크롤러 / 플랫 포머

링크 한 기사에서 Pac-Man, Galaga 및 Gauntlet을 놓쳤습니다
Adam Harte

15

나는 모든 사람들을 독점으로 시작하고 싶습니다. 저는 보통 Brett Schuchert의 독점 "코드 카타" 를 연습의 기초로 사용하지만, 그에 많은 것을 추가합니다. 내가 이것을 정말로 좋아하는 데는 몇 가지 이유가 있습니다.

  1. 좋은 코딩 방법 (디자인 패턴, TDD, SOLID, 지속적인 통합 등)에 깊은 관심을 갖고 있으며 개발자가이 연습을 수행 할 때 많은 제약이 따릅니다.

  2. 거의 모든 사람들이 독점의 규칙을 알고 있으며, 하루 만에 전체 게임을 완료 할 수 있습니다. 이것은 새로운 개발자들에게 빠른 승리를주고 실제로 참여를 유도합니다.

  3. 초기 요구 사항은 키보드 컨트롤로 시작하지만 나중에 마우스 컨트롤에 대한 요구 사항을 추가합니다. 이를 통해 개발자는 몇 가지 사항, 기존 코드를 리팩토링하는 방법, 구체적인 클래스 대신 인터페이스로 시스템의 일부를 프로그래밍하는 방법, 더 나은 / 적절한 추상화, 단위 테스트 대상, 단위 테스트 대상이 아닌 요소, 단위 테스트 대상이되는 이유 및 대상에 대해 생각하게됩니다. 좋은 단위 테스트를 만듭니다.

때로는 더 정교한 AI를 연결하고 때로는 그렇지 않습니다. 때때로 우리는 슈트 및 사다리와 같은 약간 더 복잡한 논리를 가진 다른 보드 게임과 협력합니다. 때때로 우리는 보드 게임에서 완전히 벗어나 포커 게임이나 블랙 잭을합니다.

저에게있어 가장 중요한 부분은 사람들이 빠른 승리를 거두고 좋은 프로그래밍 표준을 따를 때 소프트웨어를 얼마나 유연하게 만들 수 있는지 보는 것입니다. 이 연습은 자신감을 매우 빠르게 만듭니다. 때로는 경험이 많은 개발자가 더 복잡한 프로젝트를 중단하거나 방금 배운 새로운 기술을 연습하기 위해 이러한 작업을 직접 수행하는 것이 좋습니다 (계량기 법칙).


6
하루 만에 독점을 어떻게 구현합니까? 그것보다 훨씬 큰 프로젝트 인 것 같습니다.
Michael Kristofik 1

개발자가 사용할 아트 애셋이 준비되어 있고 위에 링크 된 가이드를 따르는 경우 매우 쉽습니다. 여기에는 여러 가지 AI 전략이나 애니메이션 및 음악의 복잡한 부분이 포함되어 있지 않지만 완전히 재생할 수있는 게임이며 하루 만에 쉽게 수행 할 수 있습니다. 정말 할 수 있고 정말 재미 있습니다.
hokiecsgrad

# 3은 또한 이미 시작한 후 요구 사항을 변경하는 고객에게 실제 경험을 제공합니다.
Jarett Millard

슬프게도 독점 링크는 죽었다 :(
Casey

웨이 백 머신에는 여전히 있습니다. web.archive.org/web/20090919075257/http://...
hokiecsgrad

15

당신의 모험을 선택하십시오

모험 책을 고르는 것과 비슷한 게임을 만들어서 프로그래밍을 시작한 친구로부터이 팁을 얻었습니다 . 기본적으로 다음과 같은 출력을 가진 간단한 텍스트 어드벤처 게임입니다.

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
> _

이러한 게임을 만들면 게임 루프, 기본 콘솔 입력 및 기본 스크립팅을 배우도록 지시해야합니다. 게임을 작성 하는 데 그래픽 엔진필요하지 않기 때문에 초보자도 쉽게 구현할 수 있습니다 . 고급 초보자는 아마도 스크립팅 엔진을 작성했을 것입니다.


7
+1이지만 프로그래밍 만 배우는 경우에만 해당됩니다. 프로그래밍을 이미 알고 있다면 이것으로 시작하지 않을 것입니다.
Jeff

1
@Jeff : 그렇습니다. 당신이 완전한 초보자라면 시작하기에 좋은 프로젝트입니다. 잠시 동안 프로그래밍 한 경우 언급 한 다른 프로젝트로 이동하여 그래픽과 그 밖의 것을 재생할 수 있습니다.
Spoike

8
실제로 이것은 스크립팅 및 데이터 중심 개발에 대해 배울 수있는 좋은 방법입니다. 이를위한 "엔진"을 작성하고 나머지는 스크립트로 작성하십시오.
Nick Bedford

1
@Jeff nah, 숙련 된 프로그래머라면 2 시간 안에 끝낼 것입니다. 그래서 그들에게 몇 가지 아이템, 문, 보스 싸움을 추가하게하십시오
bobobobo

13

초보 프로그래머와의 경험에서 진행은 일반적으로 다음과 같이 보입니다.

  1. 탁구
  2. 테트리스
  3. 엄청나게 놀라운 멋진 50 시간의 게임 플레이 3D RPG (참고 : 대부분의 사람들은이 단계를 통해 프로그래밍을 포기합니다)

4. 판타지 MMORPG : P
Nick Bedford

12

브레이크 아웃, 탁구 또는 소행성.

게임게임 프로토 타입 사이에는 큰 차이가 있습니다. 꿈의 게임을 끝내는 것이 진지하다면, "엔트리 레벨"게임을 끝내야합니다. 게임의 게임 플레이 부분을 만드는 것은 전투의 절반에 불과합니다. 메뉴 및 높은 점수와 같은 추가 항목은 간과되거나 무시되는 경우가 많지만 예상보다 시간이 오래 걸립니다.


4
세부 사항을 언급하면 ​​+1 예상보다 시간이 더 걸립니다.
mpen

11

다른 답변에는 몇 가지 좋은 제안이 있지만, 나는 다음과 같이 투표를 던지기를 원합니다. 너무 다루기 어려운 것으로 시작하십시오.

탁구가 좋은 예입니다.

목표는 : 게임 디자인과 규칙 세트를 너무 죽게 만들어서 배우고있는 새로운 것 (언어, 플랫폼, API)을 배우고 끊임없이 할 필요가없는 새로운 것을 배우는 데 집중할 수 있습니다. 게임이 어떻게 작동하는지 알아 내기 위해 휴식을 취하십시오.

일단 당신이 가면, 탁구가 처음에는 홍당무보다 약간 더 복잡하다는 것을 알게 될 것입니다. (나는 남자 프로그래밍을 가르치고 있으며 그는 pong을 학습 프로젝트로 사용하고 있습니다. 우리는 몇 가지 기능을 추가했으며 이제는 멋진 기능을 모두 수행하는 방법을 학습함으로써 학습에서 프로그램으로 산만 해졌습니다.)

가 / 줄 다른 사람에게 판매 할 준비가 될 때까지 앱 # 1 모든 방법을 통해 수행하면, 그때 뭔가 좀 더 복잡한 (테트리스, 모험 또는 무엇이든 당신이 좋아하는)하지만,을, 새로운 기술을 배우기 시작하려면 확인 당신이 간단하게 뇌사를 프로그램하는 것.

다른 예 :

  • 숫자를 추측하십시오 (1과 1000 사이)
  • 마스터 마인드 (고급 추측)
  • 간단한 페인트
  • 뱀 / 벌레 / 당신이 부르는 무엇이든.

그러나 다시 말하지만 너무 쉬운 방법으로 시작하면 실제로 무언가를 완성하고 되돌아보고 관련 내용을 볼 수 있습니다. 언어 / 플랫폼 / SDK / 엔진으로 하나의 앱을 작성하는 것과 ZERO 앱을 작성하는 것의 차이점은 HUGE 입니다. 1과 2 또는 2와 5의 차이는 훨씬 적으므로 더 큰 단계를 수행 할 수 있지만 0에서 1 단계는 아주 작은 단계가됩니다. 생각보다 커집니다!


2
"처리하기에는 너무 우스운 것으로 시작"과 "ONE 앱을 작성하는 것과 ZERO 앱을 작성하는
것의 차이점은 엄청납니다

1
2014 업데이트 : 또 다른 좋은 "언어 / 기술을 배우십시오"앱은 Flappy Bird유사합니다. 프로페셔널 프로그래머로서, 오후의 일입니다. (주말, "좋은"일을하는 주말), 다른 사람에게 프로그램을 가르치면서, 실제로 많은 합병증이 있다는 것을 알게되었습니다. 다시 말하지만, 하나0 보다 훨씬 더 많은 경험 이며, 일단 가지고 있다면, 앞으로 나아가는 방법에 대해 훨씬 더 나은 아이디어를 얻게 될 것입니다.
Olie

9

이 웹 사이트를 확인하십시오 : 12 컴퓨터 과학 게임 프로젝트 아이디어

이러한 게임 중 일부는 다른 사람들이 말한 내용을 포함합니다.

  1. 팩맨
  2. 테트리스
  3. 탁구

그러나 다음과 같은 다른 게임에 대해서도 이야기합니다.

  1. 틱택 토
  2. 누가 백만장자가되고 싶어?
  3. 그리고 마리오 클론.

또한 각 게임마다 어려움을 느끼기 때문에 무엇을 먼저 시도해야하는지에 대한 의미를 갖습니다 (따라서 게임을 어떻게 다루어야하는지에 대한 계획).

  1. 초보자
  2. 중급
  3. 많은, 진보 한, 많이 경과 한
  4. 베스트

2
+1, 그 링크를 좋아합니다. "RPG – 당신이 당신의 삶을 미워하고 (그리고 일부는 분명히한다면) 비디오 게임 프로그래밍 영광을위한이 마지막 해의 시도는 나쁘게 끝날 것입니다. 게임 엔진 자체는 종종 상당히 퍼져 있습니다 (세계 여행, 마을 여행, 상점, 싸움) 등) 불경건 한 노력이 필요합니다 "
Cyclops

5

많은 사람들이 다음과 같은 특징 때문에 Breakout으로 시작합니다.

  • 입력 : 패들을 앞뒤로 움직이기
  • 단순 충돌 : 패들, 벽돌 및 벽에서 튀는 공
  • "게임 상태 변경": 공이 벽돌에 닿을 때 점수를 업데이트하고 벽돌을 제거하고, 공이 화면의 바닥에 닿을 때 공의 수를 줄이며, 공 수가 == 0 일 때 게임을 잃는 등
  • 또한 사각형과 원이므로 그래픽에 대해 매우 부드럽게 소개합니다.

5

게임이나 소프트웨어를 작성하는 데있어 가장 어려운 부분은해야 할 일을 파악하는 것입니다. 당신은 절대적으로 사양이 필요합니다! 그것은 기존 게임의 복제를 만드는 데있어 재미있는 부분입니다. 스펙은 이미 존재합니다. 귀하의 사양은 "제품은 반드시 다른 제품이하는 모든 일을 수행해야합니다."이며, 다른 게임의 사본이 있으면이를 쉽게 확인할 수 있습니다.

당신이 파악하고 나면 무엇을 당신이 알아내는, 할 필요가 어떻게 그것을 할 당신이 유능한 프로그래머라면 정말 어려운 일이 아니다. 숙련되거나 숙련 된 프로그래머를 의미하지는 않습니다. 그것은 당신이하려고하는 대부분의 일을하는 법을 이미 알고 있음을 의미합니다. 그러나 추상화로 생각하는 방법을 이해하고 프로그래밍의 기본이되는 문제 해결 및 논리적 사고 기술을 갖추어야합니다. 그렇게 할 수 있다면 무엇이든 할 수 있습니다.

나는 대부분의 사람들이 정말로 간단한 것을 작성함으로써 게임 작성법을 배우려고하는 것에 대해 동의하지 않는다. 보상은 노력에 직접 비례합니다. 정말 간단한 게임을 작성하여 게임을 작성하는 법을 배운다면, 결국에는 간단한 게임을 작성하는 방법 만 알면 좋을 것입니다.

다른 한편으로, 압도적 인 것으로 시작하면 결코 끝내지 못할 것입니다. 따라서 심각한 문제를 해결하는 데 다소 어려움이있는 것으로 시작하십시오. 2D 콘솔 스타일 RPG 또는 사이드 스크롤 플랫폼을 구축하면 실제 게임 프로그래밍 개념을 배울 수 있습니다.


5

실제로 현재 역량이 무엇인지에 달려 있습니다. 프로그래밍에 익숙하지 않다면 사람들이 제안한 특정 게임 중 하나를 선택하십시오. 그렇지 않으면 어떤 종류의 게임을 통해 경험을 잘 활용할 수 있을지 생각해야합니다.

첫 게임을 시작했을 때 게임 개발 경험이 없었지만 몇 년 동안 엔터프라이즈 / 비즈니스 앱 개발을하고있었습니다. 첫 번째 게임 프로젝트는 턴제 전략 게임이었고 건축 적으로 말하면 엔터프라이즈 응용 프로그램과 다를 바가 없었습니다. 클라이언트 / 서버 시스템을 사용했으며 이중 WCF 서비스 채널을 통해 통신이 이루어졌습니다. 대부분의 플레이어 작전은 "주문"으로 대기하고 차례가 끝날 때 서버로 파견되었습니다. 모든 턴 처리는 서버에서 이루어졌으며, 그 후에 게임 유니버스 업데이트가 각 클라이언트에게 전송되었습니다.

그 첫 번째 프로젝트는 익숙한 영역에서 시작하면서 게임 개발을 시작하게했습니다. 프로젝트가 발전함에 따라 저는 게임 개발자가 아닌 엔터프라이즈 앱 개발자가 아닌 생각을 배웠습니다. 최종 결과는 꽤 잘 작동했으며 전함이나 틱택 토보다 약간 인상적이었습니다.


4

니블우주 침략자

비교적 간단한 AI, 그래픽, 게임 플레이, 컨트롤 등을 추가하고 싶지 않으면 사운드 효과 나 음악이 필요하지 않습니다. MS-DOS 용 QBasic에서 프로그래밍하는 방법을 배울 때이 두 가지로 시작했습니다. 훌륭한 첫 게임입니다. 팩맨은 나의 다른 선택이 될 것입니다.


나는 전에 Nibbles에 대해 들어 본 적이 없지만 Space Invaders에 대한 명확한 투표를했습니다.
jhocking

3

Moonlander 스타일 게임은 훌륭합니다 (중력, 플레이어 방향 제어 및 추력, 추력 사용시 제한된 연료). 매우 간단한 물리학을 구현 한 경험이 있고 충돌 시스템은 매우 원시적 일 수 있습니다. 걱정할 AI가 없으며 가장 중요하게 재미와 중독성 :)


2
합의 된 Thrust / Lunar Lander 스타일 게임은 훌륭한 초기 프로젝트입니다. 회전과 속도 / 가속을 다룰 때 사인 / 코사인의 신비가 드러납니다 (한동안 다루지 않은 사람에게는). 정적 또는 스크롤 타일 맵을 사용할 수 있으며 복잡한 충돌 응답을 많이하지 않고도 충돌 감지를 사용할 수 있습니다 (물건-> 폭발). 또한 제어 시스템 튜닝에 대해 생각하기에 좋은 방법입니다. 추력, 중력 및 회전 속도의 균형을 적절하게 유지하는 것이
좋습니다.

@bluscrn은 실제로 좋은 의견입니다. 사람들이 내 플래시 버전을 테스트하도록 한 후 사람들은 느낌에 대해 의견이 다르다는 것을 알았습니다. 이 중 일부는 사용자가 경험 한 이전 게임 때문이었습니다. 개발하기 전에 특별히 생각한 것이 아닙니다.
Allan

2

Galaga와 같은 하향식 우주 사수는 꽤 쉽고 충돌 감지를 상당히 잘 가르칩니다! 또한 고정 된 적의 레벨에서 무기 업그레이드 및 특수 패턴으로 움직이는 적의 여러 레벨에 이르기까지 어려움이 다양 할 수 있습니다.


1

엔티티 시스템, 적 AI, 픽업, 타일 맵, 충돌 감지, 스코어링 등이 필요하기 때문에 Gauntlet과 같은 것. 그것은 모든 것을 얻었지만 압도적 인 방식은 아닙니다.


경험이 거의 없거나 전혀없는 경우, 특히 플레이어와지면 사이의 마찰 등을 고려할 때 경험이 거의 없거나 아예없는 경우 적 AI와 충돌 감지가 압도적이라고 말할 수 있습니다. 그러나 몇 게임 후 도전
Sean James

시작한 사람들에게 약간 압도적 인 동의. 한 번에 너무 많은 개념. 단지 점수를 매기고 입력하는 것으로 시작하십시오. 그런 다음 충돌 감지 및 적과 같이 1 ~ 2 개의 새로운 일을하는 게임을 만드십시오. 아는 개념을 기반으로하지만 자신이 모르는 것을 소개하는 게임을 계속 선택하십시오. 모르는 경우 시도하지 마십시오. 간단하게 유지하십시오.
user384918

솔직히 Gauntlet-clone에서 "엔트리 레벨"게임으로 계산하기에는 너무 많은 일이 있다고 생각합니다.
PhillC

솔직히 Tetris보다 Gauntlet을 코딩하는 것이 더 쉽다고 생각합니다. 블록이 서로 어떻게 쌓여 있는지, 선이 완전한지, 선을 제거하는 방법은 매우 까다로운 추상 문제이기 때문입니다. Gauntlet은 최신 2D 플랫폼에서 1000 줄 미만으로 코딩 할 수 있으며, 사용중인 플랫폼에서 사용할 수 없다면 다른 것을 찾는 것이 좋습니다. 어쨌든, 나는 현대 게임을 구성하는 모든 부분을 학습해야하기 때문에 정확하게 제안했습니다.
Iain

당신은 "음료를 쏴!" "마법사는 곧 죽을 것이다!" 또는 내가 좋아하는 것 : "TRAY-sure rooom을 찾았습니다!"
rtperson

1

미니 젤다 클론은 훌륭하고 여기서 많이 언급되지 않은 기술을 연습합니다. 큰 타일 맵과 간단한 8 방향 이동 컨트롤을 스크롤하는 것이 좋습니다. 당신이 적을 할 수 있다면 보너스 포인트이지만, 나는 그것에 대해 너무 걱정하지 않을 것입니다.


1

테트리스 클론을 몇 개 이상 만들었습니다. 내가 그것을 할 때마다 나는 조금 다르게했다. 요즘에는 보통 어떤 종류의 소행성을 복제합니다. 나는 또한 몇 가지 이상의 미사일 사령부 스핀 오프를 만들었습니다.

나는 기본 게임 플레이로 시작했으며 더 많은 물건을 추가하거나 파워 업 등을 추가했습니다.


1

나는 항상 Tanks / Gorillas / Worms 게임으로 시작했습니다. 간단한 그래픽 디스플레이와 사용자 입력 읽기, 발사체에 중력을 적용하고 충돌 감지 테스트를하는 게임 루프로 운동 할 수 있습니다.

그 후 Gorillas에서 작동하는 INPUT 문 대신 실시간으로 사용자 입력을 읽어야하는 매우 단순한 플랫 포머 또는 슈팅 게임과 같은 게임이 나옵니다. :)


1

Solitaire (또는 실제로는 모든 카드 게임)는 새로운 UI 시스템으로 손을 더럽히는 좋은 게임입니다. 사용하는 데 필요한 많은 위젯과 컨트롤러 상호 작용 피드백 메커니즘을 연습하기 때문입니다. 또한 논리는 간단하고 모호하지 않으므로 게임 디자인이 아닌 학습에 집중할 수 있습니다.

실시간 시뮬레이션 게임의 경우, Pong은 컨트롤러 인터페이스뿐만 아니라 디자인이 간단하기 때문에 항상 좋은 간단한 출발점으로 추천합니다. 따라서 시스템의 고기-물리적 시뮬레이션에 도달 할 수 있습니다.


1

나는 항상 당신이 게임 프로그래머라면 어떤 형태의 Space Invaders 를 만들 수 있어야한다고 주장 했습니다 . 도대체 게임은 사용자가 그래픽을 직접 수행 할 수있을 정도로 간단합니다.

예를 들어, 새로운 프로그래밍 언어 나 프레임 워크를 배우는 경우, 간단한 게임 중 하나를 포팅하여 새로운 방식을 이해하는 경우가 종종 있습니다. 일을하는 것은 원래 기록 된 방식과 일치합니다.


1

그것은 당신이 이미 가지고있는 정규 프로그래머로서의 어떤 기술에 달려 있습니다. 수학이 필요합니까? 당신의 그래픽 지식? 둘 다 랩이 있습니까?

일반적으로 Tetris와 Breakout도 제 두 스타터가 될 것이라고 생각합니다. 그보다 쉬운 것은 충분한 자극을 제공하지 않습니다. 테트리스는 데이터를 알고 레이아웃하는 방법에 대한 좋은 테스트이며, 브레이크 아웃은 간단한 수학 예제입니다. 나는 항상 사람들에게 높은 목표를 세우라고 말하고 목표는 멈춰서 해결책을 찾는 것입니다.

그 후, 하늘이 한계입니다. 다시, 높은 목표. 경사 지형, parralax가있는 플랫 포머를 사용해보십시오 .2d 기술을 편리하게 사용할 수 있습니다. 핀볼을 추가하면 (절망 준비) 수학이 향상됩니다.

거기에서 3 차원으로 가서 핵심 기술 (애니메이션, 렌더링)을 배우고 다양한 게임을 처리 할 수있는 상대적으로 잘 갖추어야합니다.


0

타워 디펜스 (Tower Defense) 게임은 시작하기 가장 좋은 곳이라고 할 수 있습니다. 기존의 게임 / 엔진 (WarCraft III / HalfLife2 SDK / 등)을 모딩하여 필요한 전체 로직을 이해 한 다음 자신의 코드 기반으로 진행할 수도 있습니다.


0

내 첫 게임은 슈퍼 마리오와 같은 것이었다.

주위를 돌아 다니며 장애물을 피하고 점프하십시오. 물리 계산없이 모든 작업을 쉽게 수행 할 수 있습니다.

특정 구현 / 프레임 워크 / 엔진에 많이 의존하지 않기 때문에 간단한 2D를 취하는 것이 이상적입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.