내 문제는 게임 (실습 용) 또는 내 게임 또는 다른 문제의 복제본을 프로그래밍 할 때마다 개발 중 어딘가에서 멈추는 것입니다.
게임 개발 또는 일반적 개발에 대한 관심을 어떻게 유지합니까?
내 문제는 게임 (실습 용) 또는 내 게임 또는 다른 문제의 복제본을 프로그래밍 할 때마다 개발 중 어딘가에서 멈추는 것입니다.
게임 개발 또는 일반적 개발에 대한 관심을 어떻게 유지합니까?
답변:
디자이너로서 저는 사람들을 통계와 변수의 모음으로 생각하는 경향이 있습니다. 질문을하면 [Pong_Dev_Interest]가 감소하고 [Spa_Inv_Dev_Interest]가 증가하는 것을 쉽게 알 수 있습니다. 둘 사이의 차이가 [Dev_Project_Inertia]보다 큰 경우 ([Dev_Completion_Desire]와 관련됨) [Pong_Dev]의 활동이 중지되고 [Spa_Inv_Dev]가 시작됩니다.
영어로 : 현재 프로젝트에 대한 관심이 부족하여 완제품을보고자하는 욕구가 우선하기 때문에 프로젝트를 완료하지 못합니다. 당신이 정말로 하나를 마무리 할 유일한 해결책은 (난 당신 탁구 클론과 함께 가고 싶어) 하나 선택하는 것입니다 그것을 마무리 . 스스로에게 "자기, 나는 그 복제품을 좀 더 정제 할 수 있었지만 프로젝트를 시작하는 것이 좋을 것 같다"는 것을 알고있다. 그런 다음 계속 작동하십시오.
지루할 때 계속 일하십시오. 잘 될 때 계속 일하십시오. 허물어 질 때 계속 일하십시오! 인내하십시오! 할 수있는 작은 개발자가 되세요! 나는 당신을 믿습니다!
아헴. 거기에 약간의 과식이 있습니다. 그러나 당신은 드리프트를 얻습니다.
나는 매일 내 조언을 따르고 있습니다. 내 환경과 액터가 작동하고 승패 조건에 내장되어 있으며 플레이어가 사용할 객체를 만들었습니다. 나는 기본적으로 약간의 레벨 디자인을 시작할 준비가되었고 관심이 쏠렸다. 그러나 나는 매일 몇 가지를한다. 모든 일. 어느 날 나는 끝날 것이다.
그리고 너무 기분이 좋아질 것입니다.
나는 항상 나 자신에게 같은 질문을하고 자신에게 동기를 부여하기 위해 할 수있는 몇 가지가 있습니다 (많은 것들이 이미 여기에 게시되어 있습니다). 나에게 잘 맞는 것은 올해 GDC에서 Indie Talks 중 하나에서 들었던 것입니다. 모나코 게임을 만드는 사람이라고 생각합니다 :-)
먼저, 여러분의 경험에 맞는 프로젝트를 찾으십시오. OpenGL / DirectX의 기본 사항조차 모른다면 FPS를 만들기 시작하지 마십시오. (게임 엔진을 사용하지 않는 한 이것이 핵심은 아닙니다. ;-))
그런 다음 자신이해야 할 일과 달성하고자하는 이정표를 작성하여 어디로 가야하는지 항상 알 수 있습니다. TODO는 중요한 부분입니다. 하루 또는 몇 시간 안에 각 작업을 쉽게 수행 할 수 있도록 작업을 정의하십시오 . 따라서 코딩, 디자인, 모델링 등을 시작할 때 이미 터널 끝에 빛이 보입니다. 마무리 라인에 가까워지지 않고 한 달 동안 큰 게임 엔진을 디자인하고 코딩하는 것보다 더 우울한 것은 없습니다. 큰 작업을 작은 작업으로 나눕니다. 작업을 빠르게 마치면 정말 보람이 있으며 계속 진행됩니다. 예를 들어, 이것은 한 번에 작은 공간 사수 게임에 대한 내 작업 목록이었습니다.
이러한 모든 작업은 수행하기 쉬웠으며 일단 게임에서 작업 한 후에는 해당 영역을 반복하여 연마 할 수 있습니다.
그리고 나는 작은 게임을 마쳤다. 그것은 예쁘지 않지만 결국에는 실제로 보상하는 기본적으로 수행됩니다 :-)
문제를 해결하기 전에 문제를 식별해야합니다. 왜 관심을 잃습니까?
저에게는 보통 프레임 워크에 너무 많은 시간을 소비하기 때문에 발생하며 몇 주 후에 단일 게임 플레이 요소를 얻을 수 없었습니다.
동기 부여를 향상시키는 한 가지 방법은 반복 프로토 타이핑 또는 일부 형태의 테스트 주도 개발을 수행하는 것입니다. 일반적으로 테스트 사례 자동화가 포함되지만 게임이 그래픽을 많이 사용하므로 화면과 애니메이션을 테스트로 자동화 할 수는 없지만 게임 로직은 자동화 될 수 있습니다.
자동화 할 수없는 부분의 경우 기본적으로 게임에 대한 몇 가지 이정표를 계획합니다. 이정표 1은 아마도 화면에 스프라이트를 렌더링하고 WASD가 작동하도록 할 것입니다. 점차적으로 더 많은 기능을 추가하고 리팩터링합니다.
그것은 분열과 정복의 한 형태입니다. 작은 척에 침입하여 편안하게 작업하십시오. 헹구고 반복하십시오. 결국에는 물건을 다시 정렬하는 더 좋은 방법을 볼 수 있으며 코드를 리팩터링 할 수 있습니다. 아키텍처를 미리 구축하는 것은 지저분하지만 일반적으로 프로그래밍을 시작할 때 몇 년의 경험이있을 때까지 아키텍처를 시각화하기가 어렵습니다.
나는 더 쉬운 부분을 찾으려고 노력합니다. 무언가를 만들거나 원하지 않는 방법을 알 수없는 것처럼 기어를 바꾸고 쉐이더 등을 모델링하거나 작성합니다.
게임을 올바르게 구성하는 방법을 모른다면 해당 요소를 게임 독립 블록으로 추상화하는 방법을 배우기 시작해야합니다. 이것은 구현과 추상화를 나누는 경험, 상속 및 인터페이스 디자인을 더 잘 활용하거나 게임을 여러 파일로 만들어서 프로처럼 보이게 만드는 방법 (또는 제공하는 방법)과 같은 여러 가지 방법으로 (흥미롭고도) 도움이 될 수 있습니다. 동적 링크 라이브러리 또는 기타 인터페이스 사용을 통한 구현 가능성). 조만간 모든 일을 할 수 있다는 것을 깨닫게되면 더 이상 동기 부여 문제없이 자신을 찾을 수있을 것입니다.
처음에 갇혔을 때도 같은 문제가 있었지만 최선의 해결책은 계속 움직이거나 무언가가 어떻게 든 재설정 될 때까지 영원히 멈출 수 있습니다 (그리고 너무 오래 걸릴 수 있음). 며칠 동안 2 줄을 코딩하는 것은 중요하지 않지만 매일 프로젝트를 열고 무언가를 개선해야합니다 (영원한 작업이지만 문제는 아닙니다).
어느 시점에서 프로그램이 작동하지 않으면 마지막으로 수행 한 작업을 취소하고 (svn 또는 적어도 .rar를 날짜 이름으로 사용하여 백업 한 경우) 작업을 수행 한 시점까지 실행 취소해야합니다. 다시 시도하거나 다시 시도 할 때까지 수행해야하는 다른 변경 작업을 수행하십시오.
처음에는 디버거의 도움으로 오류를 해결하려고 시도하지만 언어가 디버거를 지원하는지 여부는 알 수 없지만 우연히 C ++ 또는 이와 유사한 것을 사용하는 경우 한 번의 실행으로 오류를 빠르게 찾는 데 도움이되므로 디버거를 더 잘 사용해야합니다.
게임 프로그래밍에 대한 독서는 또한 특별히 작업하고 싶지 않은 경우 주제를 계속 유지하는 것이 좋습니다. 온라인에서 찾을 수있는 게임 엔진과 디자인에 관한 좋은 책과 기사가 있습니다.
연습하지 않으면 아무 것도 할 수 없습니다. 버그를 찾으려고하는 것은 처음에는 매우 실망 스러울 수 있지만 어떻게해야하는지 알면 실제로 쉽다는 것을 알게됩니다. 이것은 변경 사항이 전체 프로그램에 영향을 미치지 않는 방식으로 코딩하여 오류를 찾을 수있는 장소의 양을 줄임으로써 시간이 지남에 따라 피하는 방법입니다. 포기하기 어려울 때마다 다음에 게임을 할 때마다 시작하기 전에 포기할 것이라고 생각합니다. 나쁜 순간을 극복하여 나쁜 순간을 극복하는 방법을 배우십시오 .P 동기 부여를 잃는 순간을 지나치지 않으면 게으름이 이기고 잃을 것입니다. 많은 노력없이.
추신 : 궁금해 ... 게임을 만들기 위해 무엇을 사용하고 있습니까?
[anon의 답변에 대한 의견으로 남을 것이므로 게시했을 때 삭제되었습니다. 그는이 모든 기능을 작동시킨 다음 단일 파일 코드를 여러 파일로 분할하여 모든 것이 무너질 수 있다고 언급했습니다.]
다시 : 리팩토링, 일이 심지어 전문가에게 일어날 수 있습니다. 때로는 Git과 같은 훌륭한 도구를 사용하더라도 기능 A와 기능 B 대신 작동하지 않고 병합이 실패 할 수 있습니다! 유일한 선택은 A로 돌아가서 다시 시도하는 것입니다. 운 좋게도 버전 관리는이 코드를 저장합니다. 실제 버전 제어를 사용하지 않는 경우 최소한 dev 폴더를 정기적으로 압축하여 수동으로 수행하십시오-HD 공간이 저렴합니다! 결론적으로, 작동하는 것으로 돌아가서 작은 단계로 리팩토링하여 게임이 각 단계에서 여전히 작동하는지 확인하십시오. 모든 것이 무너지는 것을보기 위해서만 코드를 정리하는 것은 정말 우울합니다. 이전 코드로 되 돌리십시오.
동기 부여를 유지하려면 게임 엔진이 아닌 게임을하고 있다고 스스로에게 말하십시오. 게임 엔진은 훌륭하지만 너무 자주 게임 제작에 방해가됩니다.
내 요점을 설명하기 위해 일이 얼마나 자주 진행되는지 알려줄 수 있습니다. 처음에는 스프라이트를 몇 개 만들어서 프로토 프레임 워크를 사용하여 화면에서 움직이면 감격합니다! 당신은 당신의 진보를 볼 수 있고 잘 진행되고 있습니다; 당신은 당신의 친구를 보여줄 수 있습니다.
그런 다음 개념을 약간 익힌 후에는 프레임 워크 (또는 게임 엔진)를보다 유연하게 만들어야한다는 것을 알게됩니다. 또는 최신 패턴을 따르지 않는 클래스를 리팩터링해야합니다. 그리고 거기서부터, 당신은 죽음의 나선을 시작합니다 : 당신은 게임 작업을 중단하고 게임 엔진 작업을 시작합니다. 그리고 게임 엔진은 그다지 재미 있지 않습니다. 리팩토링하는 데 몇 시간을 소비 할 수 있으며 게임에 표시 할 내용이 없습니다. 그리고 나서, 당신은 관심을 잃습니다.
기억하십시오 : 게임 엔진이 아닌 게임을 만드십시오. 필요할 때만 리팩토링하십시오. 너무 유연하지 말고 최소한으로 만하십시오. *
* : 물론 리팩토링과 유연성이 중요합니다. 그러나 실제로 게임을 마치는 것만 큼 중요하지는 않습니다.