현재 프로젝트를 연마하는 것이 새로운 프로젝트를 시작하는 것보다 더 나은 학습 경험입니까? [닫은]


15

몇 년 전에 프로그래밍을 시작했습니다. 이제 게임을 만들려고합니다. 나는 galaga, tetris, arkanoid 등과 같은 잘 알려진 게임을 복제하기위한 많은 권장 사항을 읽었습니다. 또한 전체 게임 (메뉴, 사운드, 점수 등)을 위해 가야한다는 것을 읽었습니다.

어제 나는 arkanoid 클론의 첫 번째 완전한 버전을 완성했다. 그러나 아직 끝나지 않았습니다. 화면 해상도 스위처, 컨트롤 키의 재 맵핑, 깨진 벽돌에서 떨어지는 파워 업 및 거대한 등을 구현하여 몇 달 동안 (자유로운 시간에 취미로 프로그램합니다) 계속 작업 할 수 있습니다.

그러나 나는 하나의 게임을 복제하는 방법을 영원히 배우고 싶지 않습니다. 이 arkanoid 클론을 개발하는 동안 얻은 디자인 아이디어를 적용하기 위해 다음 클론에 촉구해야합니다 (동시에 Ludum Dare 21 게임 콘테스트에서 GoF 책과 많은 소스 코드를 읽고 있습니다).

따라서 질문은 : 원래 게임의 모든 기능을 가질 때까지 arkanoid 클론을 계속 개선해야합니까? 아니면 다음 복제본으로 이동해야하고 (복제하기에는 거의 무한한 게임이 있습니다) 이전 복제본에서 내가 잘못한 것을 수정해야합니까?

이것은 매우 주관적인 질문 일 수 있으므로 내 자신의 게임을 만드는 방법을 배우는 가장 효과적인 방법에 대한 답변을 제한하십시오 (다른 사람의 아이디어를 복제하지 않음). 감사합니다!


설명

내가 구현 한 것을 명확히하기 위해이 목록을 작성합니다.

구현 된 기능 :

  • 수신 거부 기능 (볼이 벽, 벽돌 및 바에 튀어 오름).
  • 벽돌과 바에 튀는 경우와 플레이어가이기거나 잃을 때 나는 소리.
  • 기본 타이틀 메뉴 (새로운 게임 및 이탈 만 해당). 게임 내 메뉴 및 승 / 패 메뉴도 있습니다.
  • 세 단계 만 있지만지도 시스템이 너무 쉬워서 저에게 많은 것을 가르 칠 것이라고 생각하지 않습니다.

구현되지 않은 기능 :

  • 벽돌을 부술 때 파워 업.
  • 복잡한 벽돌 (하나 이상의 "적중 지점"과 무적).
  • 더 나은 그래픽 (실제로는 좋지 않습니다).
  • 프로그래밍 연마 (디자인 패턴을보다 집중적으로 사용)

: 다음의 (최소한)에 대한 링크 웹 페이지의 http://blog.acamara.es/piperine/ 종류 느낌의 나는, 그것을 보여 부끄러워 그래서 나도 타격을하지 말아 주시기 바랍니다 :-)

내 질문은 구현되지 않은 기능과 관련이 있습니다. 가장 빠른 (최적의) 학습 경로가 무엇인지 궁금했습니다. 1) 커져가는이 프로젝트에서 구현되지 않은 기능을 구현하거나 2) 레슨과 새로운 것을 가르쳐 줄 새로운 게임을 만들 수 있습니다.


대답

내 경우에는 더 연마하고 게임을 "배송"하려고 생각 하기 때문에 @ ashes999 답변을 선택합니다 . 나는 다른 모든 대답도 명심하는 것이 중요하다고 생각합니다. 만약 당신이 같은 질문을 여기에 온다면, 급한 결정을 내리기 전에 모든 토론을 읽으십시오.

모두 감사합니다!


죄송하지만하지 않는, 객관적 질문 말을 것이 목표. 그것은 사람 , 그들의 능력, 목표 및 동기 부여에 달려 있으며, 프로젝트를 변경해야하는지 여부는 모두 주관적인 질문입니다. 이 질문에 대한 "올바른"대답은 없습니다.
Cyclops

당신 말이 맞아요. "주관적"이라고 생각했지만 "객관적"이라고 적었습니다 (왼쪽과 오른쪽으로도 발생합니다 ...). 나는 그것을 바꿨다.
Alejandro Cámara

웁스, 유감입니다 그러나 나는 이것을 말하기 싫어하지만 여전히이 사이트에 대한 좋은 질문은 아닙니다. StackExchange 사이트의 목적은 한 사람 (또는 소수의 사람)에게만 해당되는 질문이 아니라 많은 사람에게 유용한 질문 / 답변을 작성하는 것입니다. 또한, 하나의 정답이 있어야합니다. 그러나이 게시물을 찾는 사람들에게는 미래에 가장 적합한 답변을 찾는 사람이있을 수 있습니다.
Cyclops

1
나는 그것이 좋은 질문이 아니라고 느꼈다. 그러나 어쨌든 내가 쓴 이유는 누군가 같은 딜레마에 붙어 있기 때문입니다. "좋은"답변이 없더라도 토론은 다른 사람들이 "올바른"답변을 취할 수있게합니다.
Alejandro Cámara

1
개인적으로 저는 학습 프로젝트의 범위에 모든 게임 기능이 포함되어야한다고 생각합니다 (그래서 파워 업을 구현하십시오). 그래픽 연마를 방해하지 마십시오.
jhocking

답변:


32

Patrick의 답변에 완전히 동의하지 않습니다 . 게임 개발자로서 성공하고 싶다면, 배우는 데 필요한 최고의 기술 은 아이디어를 얻고 완벽하고 세련된 게임을 제공하는 방법입니다.

시간이 지남에 따라 (수년 후에 내가 깨달았 던) 깨달을 것은 프로그래밍 은 게임의 작은 부분 일 뿐이라는 것입니다. 재미 있기 때문에 쉬워요. 그러나 프로그래밍에만 집중하면 불완전한 개념 증명과 데모가 남게됩니다.

대신 웹 사이트와 블로그 (Wordpress가 이런 종류의 제품에 적합 함)를 설치하고 게임을 마치고 (Arkanoid로 시작) 야생에 배포 할 것을 강력히 제안합니다.

또한 이 작업을 수행하면 게임이 완료되는 시점을 제어 할 수 있습니다. 10 가지 주요 기능을 갖춘 1000 개의 레벨을 원한다면 좋습니다. 3 가지 주요 기능을 갖춘 10 가지 레벨을 원한다면 괜찮습니다. (실제로, 더 많은 것을 배우고 그러한 방식으로 연마하는 데 집중하기 때문에 소규모 프로젝트를 더 자주 권장합니다).

편집 : 동의하지 않는 사람들에 대한 응답으로, 나는 명확히해야한다고 생각합니다. 당신은 (내가하는 단지 하나 명의 목적 / 실험을 위해 게임을 만든 경우 모든 모든 수단으로, 시간을) 절단 범위와 그것을 제공. 아무도 Arkanoid가 세련된 게임이 되려면 1000 레벨이 필요하다고 말했다. 당신의 의견으로는, 재미 있고, 나아가기에 충분한 수준을 만드십시오.

게임에서 몇 년을 보내고 절대 배를 타지 못할 수도 있습니다. 그러나 기술 데모와 프로토 타입 만 영원히 만드는 다른 구멍에 빠지기가 훨씬 쉽다고 생각합니다. 이 일을 스스로 멈추는 데 10 년 이상이 걸렸습니다.


3
+1 "배송은 (필수?) 기능"이지만이 경우 arkanoid 클론을 프로토 타입으로 볼 수 있으며, 개념이 입증되거나 반증 될 때 프로토 타입을 버릴 수 있습니다.
Oskar Duveborn

2
@Oskar는 하나의 게임을 배송하는 것보다 1000 개의 프로토 타입을 만드는 것이 더 쉽습니다. 궁극적으로 배송은 성공을 거두는 반면 프로토 타입은 일부 코딩 기술을 향상시킵니다.
ashes999

2
왜 "일부 코딩 기술을 향상"시키는가? 그는 특히 학습 경험에 대해 묻고 있습니다.
jhocking

Patrick의 답변 때문에 @jhocking. 내 대답은 특히 코딩 기술 그 이상에 초점을 맞추는 것입니다.
ashes999

1
@Yannbane 사람들이 게임을하고 "예, 그것이 완전한 게임입니다"라고 생각한다면, 짧은 게임이라하더라도 완벽합니다. 불완전한 게임은 보통 깨진 게임이나 한 레벨의 게임입니다. 문 밖으로 발송하면 완료됩니다.
ashes999

8

이전 두 답변의 종합을 제안합니다. 기본적으로, 나는 아이디어를 가지고 완벽하고 세련된 게임을하는 방법을 배우는 것이 엄청나게 중요하다는 데 동의합니다. 인터넷은 누군가가 시작하고 지루해하는 반 완료 프로젝트로 가득 차 있습니다. 처음부터 끝까지 프로젝트를 고수하는 능력, 내가 "마무리 능력"이라고 부르는 것은 드물고 귀중하며, 스스로 연습하도록 강요함으로써 얻습니다.

그러나 당신은 아직 학습 단계에 있지 않습니다. 나는 당신의 첫 게임에서 이것을하는 것을 권장하지는 않지만, 첫 번째 완전한 프로젝트를 진행하기 전에 배우는 작은 게임을 몇 개 만들어보십시오.

(제외 : 나는 이것을 전에 정확히 지적한 적이 없지만 지금은 그것에 대해 생각하고 있습니다. 숙련 된 개발자를 초보자와 분리시키는 것이 마무리 능력이라고 생각합니다)


추가 : 답 사이의 많은 의견 불일치가 그가 어디 있는지에 대한 다른 가정에 기인한다고 생각합니다. 예를 들어, 그는 "아카 노이드 클론의 첫 번째 완전한 버전을 완성했다"고 말했을 때 많은 다른 것을 의미 할 수 있습니다. 필자의 경우, 그는 "메뉴, 사운드, 점수를 포함한 전체 게임에 가야한다는 것을 읽었다"고 말한 이후 실제로 그가 그 물건을 구현하고 계속 나아가 야하는지 묻고 있다고 가정합니다. 내가 아니오라고 말하면;이 프로젝트를 완료하고 다음 프로젝트로 넘어갑니다.

그러나 그것은 내 가정에 불과합니다. 그는 실제로 그가 그런 을 했다고 말하지 않고 단지 그것을 읽었다 고 말했습니다. 그가 그 일을하지 않았다면, 당신이 그 일을 할 때까지 움직이지 말라고 말할 것입니다.


1
+1 날 이길! 방금 시작한 것처럼 들리므로 가능한 많은 물건을 만들고 배우고 배우는 것이 더 중요합니다. 나아질수록 광택에 집중할 수 있습니다. 그렇지 않으면 첫 게임에서 2 년을 소비하게됩니다.
NoobsArePeople2

1
동의하지 않는다. 코딩하는 데 10 년을 소비 할 수 있으며 단일 게임을 배송하지 않습니다. 또는 첫 6 개월 동안 간단한 아르카 노이드 클론을 배송 할 수 있습니다. 후자는 전반적으로 더 강력한 개발자가되고, 전자는 소프트웨어 개발 기술에 도움이된다고 생각합니다 (툴, 수명주기 등 코딩에 대해서는 전혀 생각하지 않습니다).
ashes999

글쎄, 지금 10 년 전에 말하지 않았다? 그럼에도 불구하고 6 개월 완료 프로젝트 전에 1 년 동안 연습 연습을 코딩하는 데 1 년을 소비하는 것이 첫 번째 프로젝트로 6 개월 완료 프로젝트를 직접 수행하는 것보다 더 나은지 여부는 의문입니다. 이것은 내가하는 가르침에서 중요한 질문입니다. 학생들이 한 학기 동안 많은 소규모 프로젝트 나 전체 학급을 수반하는 단일 대규모 프로젝트를하는 것이 더 낫습니까? 개인적으로 저는 "졸업생을위한 많은 소규모 프로젝트, 대학원생을위한 하나의 큰 프로젝트"를 기대합니다.
jhocking

내 입장은 완전한 프로젝트만큼 중요하지만 그 프로젝트가 성공하기 위해서는 먼저 이전의 많은 프로젝트에 대한 기본 사항을 이미 배웠어야한다는 것입니다.
jhocking

1
어떤 이전 답변? 현재, 이것은 투표로 2 위를 기록했습니다
ADB

5

다음 프로젝트로 넘어 가야한다는 올바른 아이디어가 있다고 생각합니다. 나는 당신이 이미 처음부터 배웠고 배운 것을 적용하기를 원하기 때문에 이것을 생각합니다! 기본 학습 속도를 늦춘 후에는 계속 학습 할 수있는보다 심층적 인 기능을 복제해야합니다.

게임 디자인이 아닌 프로그래밍 기술을 연구하고 있으므로 학습이 끝나면 게임 디자인을 프로그래밍 할 수있게되기를 원합니다.


3
@ ashes999에 동의하고 동등하게 동의하지만 OP의 명시된 맥락에서 그는 구현을 실험하고 다양한 유형의 게임을 작성하는 것을 배우고 있다고 생각합니다. 이 경우에는 다음 단계로 넘어가는 것이 좋습니다.
엔지니어

실제로, 그는 게임 프로그래밍뿐만 아니라 게임 디자인을 배우고 싶다는 것을 암시했습니다. 그의 마지막 문장에서 그는 "나의 게임을 만드는 법을 배우는 가장 효과적인 방법"이라고 말했다.
jhocking

2

왜 클론을 "너의 것"으로 만들지 않습니까? 흥미를 유발할 수있는 새로운 흥미로운 기능을 추가하십시오.

"자신의"프로젝트를 시작해야 할 단점이 있습니다. 현실은 누군가가 이미 비슷한 것을 가지고있을 것입니다. 새로운 장르의 게임을 만들 계획이 아니라면,이 "복제품"을 자신의 것으로 만드는 것이 좋습니다.

예를 들어, 대학 친구가 탁구 "복제"를 만들었습니다. 그는 자신 만의 것으로 만들었고 파워 업을 통해 달콤한 탱크를 15 초 동안 운전하고 가능한 많은 벽돌을 파괴 할 수있는 완전히 새로운 유형의 게임 플레이를 추가했습니다!

게임 개발 (예술, 코드, 디자인)을 배우는 가장 좋은 방법은 그냥하는 것입니다. 처음에는 잘하지 못할 수도 있지만 핵심은 코드를 유지하고 더 많은 코드를 작성하고 더 많은 애니메이션을 그리고 더 많은 레벨을 디자인하는 것입니다 !! 내 의견으로는, 당신이 당신 자신의 것을 만들고, 계속하고, 재미있게 만들고, 즐겁게하는 한 무언가를 "복제"하고 있는지는 중요하지 않습니다!


2

귀하의 질문에 대답하기 위해 그렇습니다 . 현재 프로젝트를 개선하는 것이 새로운 프로젝트를 시작하는 것보다 더 나은 학습 경험이 될 것입니다.

1) 일을 끝내는 습관을 들여야합니다. 그것은 그 자체 가 학습 경험입니다.

2) "추가하기에 너무 게으른"과제 (더 나은 용어가 부족하기 때문에)에는 수많은 게임 개발 레슨이 포함되어있을 수 있습니다.

3) 당신이 Arkanoid에 지루 하다면 , 당신은 항상 그것을 따로두고 당분간 다른 일을 할 수 있습니다. 그것에 아무런 문제가 없습니다.

1) 미완성 물건이 너무 많으면 나쁘다. 미완성 된 제품을 사용하여 실력을 효과적으로 발휘할 수는 없습니다.

완료되지 않은 것들을 갖는 것은 옷장으로 가득 찬 쓰레기를 먹는 것과 같습니다. 그중 일부는 유용 해 보이지만 실제로는 매우 쓸모가 없으며 게임 산업의 현실은 "정크"(미완성 된 게임)를 높이 평가할 것입니다.

완료되지 않은 게임은 너무 일반적입니다. 사람들은 거기에 그들을 배치하고 "이 게임은 삿포로가 StreetFighter입니다 .. 이제 당신은 앞뒤로 움직일 수 있습니다." Unimpressive . 아무도 "삿포로"가 무엇인지 머리에서 볼 수 없습니다. 그들은 그것이 완성되지 않은 것을 위해서만 본다.

끝나지 않은 게임은 반 구운 타르트와 같습니다. 어떤 사람들은 그 점을 이해할 수 있지만 실제로는 역겨운 맛이 나며 오븐에서 20 분 더 먹으면 이미 절반의 일을 모두에게 맛볼 수 있습니다.

2) 작업하지 않는 기능에는 매우 유용한 교훈이있을 수 있습니다.

마무리 할 때 물건 :

구현되지 않은 기능 :

  • 벽돌을 부술 때 파워 업.
  • 복잡한 벽돌 (하나 이상의 "적중 지점"과 무적).
  • 더 나은 그래픽 (실제로는 좋지 않습니다).
  • 프로그래밍 연마 (디자인 패턴을보다 집중적으로 사용)

이러한 것들 중 일부는 제외 할 수 있습니다. 예를 들어 "디자인 패턴을보다 집중적으로 사용"하십시오. 이와 같은 리팩토링은 애완 동물 프로젝트를위한 시간 낭비이며,이를 적용하려면 새 프로젝트를 시작해야합니다.

이 중 일부는 쉽습니다. 예를 들어 복잡한 벽돌. 이것들 중 일부는 실제로 많은 작업 입니다. 파워 업은 쉽지 않으며 총, 총알과 같은 빌드 기능을 필요로하며 광선 교차 코드를 추가해야합니다.

당신이보고있는 것은 "비계를 제자리에 두는 것은 매우 쉬웠습니다. 그리고 거의 다 끝났습니다. 마무리 작업은 너무 많은 일이 될 것입니다." 예, 집의 나무 프레임을 세우는 것은 "쉬운"작업의 절반 일 수 있습니다. 건식 벽체, 전기, 배관은 모두 "세부 사항"입니다. 그러나 집을 끝내지 않으면 아무도 당신이 집을 끝내면 집 얼마나 큰지 "구매" 할 수 없습니다.

3) 작업중 인 것에 지루하다면 다른 것을 시작하는 데 아무런 문제가 없습니다.

이것은 당신이 일하는 것을 쓰레기로 의미하지는 않지만 다른 일에 대해 한두 달을 생각하거나 새로운 게임을 시작하는 데 아무런 해가 없습니다. 신선한 관점으로 Arkanoid로 돌아올 수 있습니다.

또한 마지막 요점. Arkanoid의 모든 예상 기능을 구축하는 것 외에도 자신의 트위스트를 추가하는 것이 재미 있습니다. 따라서 복제본을 짧게 멈추지 않고 한 걸음 더 나아가서 원래 게임에서 혁신해야합니다.


1

정답은 실제로 다음에하고 싶은 일에 달려 있습니다. 새로운 무언가로 넘어 가면 같은 오래된 문제를 다시 해결하고 실제로 기술을 확장하지 못할 수도 있지만 새로운 무언가로 넘어갈 수 있습니다. 당신이 계속 연마하면, 당신이 준 간단한 목록에서 배우는 유용한 것들이 있으며, 그것들은 미래에 당신을 잘 견뎌 낼 것이지만, 여전히 같은 오래된 코드베이스에서 일하고 있습니다.

내가 추천하는 것은 순전히 개인적인 견해이며, 새로운 것으로 나아가서 그에 대한 광택을 구하는 것입니다. 동시에 새로운 무언가로 몸을 스트레칭하십시오. 현재 3D API를 사용하고 있지 않다면 배우고 사용하십시오. 하나를 사용하는 경우 다른 것을 배우고 사용하십시오. 또는 사용중인 수준에서보다 고급 수준으로 이동하십시오. 더 나은 사운드, 물리 또는 입력 엔진을 포함하십시오. 어쨌든, 내가 중요하게 생각하는 것은 현재의 안락 지대에서 조금 벗어나서 재미있게 즐기면서 더 많은 기술과 지식을 쌓는 것입니다.

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