태그 보관물: software-engineering

software-engineering

“날개를 벌 수있는”좋은 게임은 무엇입니까? [닫은] 당신의 손이 더러워 얻을 수있는 좋은 엔트리

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

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



답변

탈주

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

혼자 하는 여러 가지 놀이

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

팩맨

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

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

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


답변

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

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

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

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


답변

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

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

답변

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

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 !, 그리고 우리는 마음과 간을 먹기 위해 돌아 왔고, 삶의 원이 성취되었습니다.

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

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

보세요.

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

순서대로 :

  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 점을 얻도록하십시오. 그 후, 다음 경기에서 시계 반대 방향으로, 반지 주위 등에서 점수를 매 깁니다. 주제와 사전 기대치에 따라 점수가 얼마나 급격히 변하는 지 확인하십시오.
  • 플레이어 계획 시퀀스 만들기. 퍼즐 게임은 이것에 대해 가장 깔끔한 방법입니다.
  • 자원 관리
  • 업그레이드
  • 시간 압력 크 랭킹

… 어. 나는 지루했다.


답변

테트리스

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

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


답변

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

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

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