CS 전공 첫 해에 대한 조언 [닫기]


17

나는 주로 Java 기반 코스 인 CS의 첫해가 끝나고 있습니다. 게임 개발에 발을 담그고 싶지만 어디서부터 시작해야할지 모르겠습니다.

어떤 사람들은 C 스타일 스크립팅 언어 (선택하기 쉬워야 함)가 가장 간단하고 주로 게임 디자인과 전체 게임이 어떻게 어울리는 지에 초점을 맞출 수 있기 때문에 게임 제작자를 시작한다고 제안했습니다.

API를 통해 opengl과 directX를 잘 추상화했기 때문에 많은 사람들이 XNA를 추천했습니다. 또한 C #이 Java와 매우 유사하다고 들었습니다.

또한 Java에 익숙하기 때문에 게임 프로그래밍을 고려했으며 멀티 스레딩 및 2D 그래픽 API에 대한 추가 읽기를 수행했습니다.

마지막으로, 친구가 최근 파이 게임을 보여주었습니다.

C ++이 좋은 출발점인지 모르겠습니다. 초보 게임 개발자에게 보았던 많은 게시물은 첫 번째 게임 프로젝트에 권장하지 않습니다.

특히 Java 배경에서 게임 개발에 참여한 사람들의 의견에 감사드립니다.


5
C ++은 어렵고 어렵습니다. 그러나 Java가 실제로 설정하기 전에 마음을 감싸려고하면 장기적으로 더 쉽습니다. C ++ 배경에서 Java를 배우는 것보다 Java 배경에서 C ++를 배우는 것이 확실히 어렵습니다. joelonsoftware.com/articles/ThePerilsofJavaSchools.html
David Young

1
Java로 시작한 후 C ++을 배우려고 노력하고 있었고, 이전 스타일 C ++로 시작한 다음 Java를 배웠습니다. 포인터로 건너 뛰는 것에 대해 걱정이 되시면 C 및 Unix 프로그래밍을 배우는 것이 좋습니다. 완전히 새로운 사고 방식을 적용하므로 적용 할 수없는 Java 개념을 적용 할 가능성이 줄어 듭니다.
michael.bartnett

답변:


14

좋은 선택이 많이 있습니다. (게임 프로그래밍뿐만 아니라 CS1과 CS2를 가르칩니다.) 먼저 컴퓨터 과학자처럼 생각하는 법을 배웁니다. 개념이 실제로 보편적이기 때문에 언어에 너무 묶여 있지 마십시오.

Java는 꽤 좋은 언어이지만 Java로 게임을 만드는 것은 약간 지루합니다. 프로세스를 조금 더 쉽게 만드는 흥미로운 엔진이 있습니다. 불행히도 게임 엔진을 편집 도구에 연결하는 것은 다소 고통 스러울 수 있습니다.

나는 FANG 엔진을 좋아한다. (슬프게도 아직 하이퍼 링크를 게시 할 수 없으므로 구글에서 찾아보기 바란다 .)이 프로젝트의 흥미로운 부분 중 하나는 온라인 에디터이다. 즉, 이클립스 설정을 망칠 필요없이 바로 시작할 수 있습니다.

저는 Game Maker의 팬이 아닙니다. GUI는 프로그래밍 방법을 배우고 싶지 않은 사람들에게 적합하며 괜찮은 프로토 타이핑 도구입니다. 그러나 내가 싫어하는 두 가지가 있습니다. 첫째, 상업입니다. 그것은 나쁘지 않지만, 무료 오픈 소스 대안이 있다면 좋을 것입니다. Game Maker의 더 큰 문제는 스크립팅 언어입니다. 결국 GUI를 능가하고 실제로 코드 작성을 시작해야 할 것입니다. GM의 스크립팅 언어는 매우 거꾸로 생각됩니다. CS 전공자이므로 코드 재사용, 우아함, 선명도, 효율성 및 모듈성에 관심이 있습니다. GM 언어는 당신을 실망시킬 것입니다.

저는 파이썬과 파이 게임을 좋아합니다. (사실, 나는 그들에 관한 책을 썼습니다. 원한다면 내 사이트에있는 모든 노트와 온라인 비디오를보십시오. 당신은 책이 있든 없든 그런 자료에 오신 것을 환영합니다.) 파이썬은 훌륭한 우아한 언어입니다. 배우기가 너무 어렵습니다 (특히 프로그래밍 방법을 이미 알고 있다면) Pygame은 널리 사용되는 SDL 2D 엔진의 래퍼입니다. 사실, 파이 게임에 두 번째 래퍼를 추가하여 플래시처럼 쉽게 작업 할 수 있도록했습니다.

플래시에 관해서는 그만한 가치가 없다고 생각합니다. (나는 당신이 묻지 않았다는 것을 안다) 그것은 좋은 플랫폼이지만, 그것이 모바일 장치에서 어떻게 사용 될지에 대한 비용과 불확실성은 그것이 큰 학습 도구가 아닐 수도 있음을 의미합니다. (저도 Flash에서 게임 개발에 관한 책을 썼습니다 만 Flash를 더 이상 가르치지 않습니다.)

시도해 볼만한 다른 좋은 것들이 있습니다. MIT에서 스크래치 사본을 얻으십시오. scratch.mit.edu 아이들을 위해 만들어졌지만 그렇게하지 마십시오. 그것은 절대적으로 놀라운 게임 및 애니메이션 도구입니다. 프로그래밍은 타일을 사용하므로 쉽게 시작할 수 있습니다. 당신이 할 수있는 일에 완전히 놀랄 것입니다.

Carnegie Melon www.alice.org 에서 Alice를 사용해보십시오 . 최신 (3 차) 에디션은 실제로 Sims2 모델을 사용하는 Java의 확장판입니다.

스크래치와 앨리스는 모두 무료입니다.

살펴볼 또 하나의 훌륭한 도구는 Blender www.blender.org입니다.

그것은 3D 모델링 도구이지만 많은 사람들이 드래그 앤 드롭 프로그래밍 인터페이스가있는 완벽한 게임 엔진이라는 것을 알지 못합니다. 타일을 자란 후에는 파이썬 지원 기능이 내장되어 있습니다.

이제 HTML5에 관심이 많습니다. HTML은 거의 없습니다. HTML, CSS 및 JavaScript입니다. 게임 개발 환경은 아니지만 큰 역할을 할 것이라고 생각합니다. 다음 책은 HTML5의 게임 개발에 관한 것입니다.

행운을 빕니다. 질문이 더 있으면 알려주세요.


의견을 보내 주셔서 감사합니다. 귀하의 사이트를 확인하는 중입니다. 귀하의 경험이있는 사람이 여기에 기여하는 것이 매우 중요합니다
avatarX

포인터 처리는 보편적이지 않습니다 = (내 Java가 가져 오는 것을 저주하십시오.
David Young

Java로 게임을 만드는 것이 지루하다고 생각하는 이유를 알고 싶습니다. 또한 파이썬이 덜 지루하다고 제안하는 것 같습니다. 많은 훌륭한 Java 게임 중심 프레임 워크와 라이브러리가 있기 때문에 대담한 진술처럼 보입니다.
zfedoran

1
초보 프로그래머에게는 Java의 모든 것이 더 지루할 수 있습니다. printf와 같은 것을 비교하십시오. 파이썬에서는 print 문장의 일부입니다 : print "% s, score is % d"% (student, score). PHP에서는 모든 프리미티브를 래퍼 클래스로 캐스팅하고 객체로 캐스팅하고 익명의 객체 배열을 만들어야합니다. 나는 자바를 좋아한다. (나는 몇 년 동안 그것을 가르치고 그것에 대해 책을 썼다.) 그러나 목표가 누군가가 게임 프로그래밍에 들어가게하는 것이라면 가능한 한 방해가되는 언어를 원한다.
Two pi

의견을 보내 주셔서 감사합니다. 어디에서 왔는지 이해하는 데 도움이되었습니다. 그러나 파이썬이 학생들에게 더 나은 언어라는 것에 대해서는 아직 판매되지 않았습니다. 대학의 교수진이 1 학년 학생들을 위해 최근 파이썬으로의 변화에 ​​대해 질문 한 것과 비슷합니다. 아마도 학생들은 단순히 새로운 문제에 갇혀있을 것입니다. 예전에는 모든 것을 "정적"으로 만드는 학생들 이었지만 이제는 유형 간의 차이를 이해하기가 어렵습니다.
zfedoran

5

그것은 당신의 목표가 무엇인지, 게임 개발의 어떤 부분에 참여하고 싶은가에 달려 있습니다.

게임 엔진이 어떻게 작동하고 처음부터 무언가를 구축하는 방법에 대한 실제적인 견해에 관심이 있습니까? 아니면 가능한 빨리 게임 개발 부분에 참여하고 싶습니까?

볼트와 너트 : XNA 는 발가락을 그 경기장에 담그는 좋은 방법입니다. 프레임 워크는 많은 기능을 제공하지만 C #에 익숙해지면 각 조각을 고유 코드로 천천히 대체 할 수 있습니다. 학습 C #은 도구가 종종 C #으로 구축되므로 향후 게임 개발 위치에 적합합니다.

게임 플레이 프로그래밍 : Unity 는 좋은 옵션입니다. 무료이며 JavaScript 및 C #을 비롯한 여러 언어로 코딩 할 수 있습니다. 당신은 일을 빨리 시작하고 실행할 수있을 것입니다. 또한 다른 언어로 전환하고 언어를 혼합하여 이해를 넓히는 연습을 돕습니다.

좋은 점은 무료로 놀 수 있고 최소한의 비용으로 다양한 하드웨어에 연결할 수 있다는 것입니다.


4

항상 자바 기반 게임을 할 수는 있지만 아무 문제가 없습니다 (http://zetcode.com/tutorials/javagamestutorial/)

XNA와 AS3은 매우 가깝고 원하는만큼 복잡하거나 간단한 게임을 만들 수 있습니다. (하지만 자바에서도 마찬가지입니다)

기억해야 할 한 가지는 항상 연습이며 코드를 가지고 놀아 보는 것입니다.


3

자바 멍키 엔진

Java에 가장 익숙하다면 게임을 만드는 동안 사용할 프레임 워크에 Java Monkey Engine을 사용할 수 있습니다. 또한 Netbeans 및 Eclipse와 통합하기위한 지시 사항을 포함하여 상당한 양의 문서 / 자습서가 있습니다.


JMonkeyEngine이 좋아 보인다고 말해야합니다. 꼭 확인하겠습니다. 입력 해 주셔서 감사합니다
avatarX

2

통일

Unity를 사용해보십시오 . 그들은 무료 버전을 가지고 있으며 Unity에서 제공하는 두 가지 튜토리얼을 따라 몇 시간 만에 기본 아이디어를 얻을 수 있습니다.

화합의 또 다른 멋진 점은 JavaScript를 스크립팅 언어로 사용할 수 있으며 Windows, MacOS, Web, iPhone 및 Android 장치에서도 버전 3으로 게임을 게시 할 수 있다는 것입니다.

또한 Unity 답변에 StackExchange 엔진을 사용 하고 있으며 모든 Unity 관련 질문에 대한 훌륭한 커뮤니티가 있습니다.


1

초기 CS 교육이 Java로 개발 된 개발자로 말하면 좋은 시작이 될 것입니다.

C #은 Java와 매우 가깝습니다 (때로는 더 나은 라이브러리를 갖춘 제한된 플랫폼 Java라고 농담합니다) .XNA가 좋은 선택 일 수 있습니다. Minecraft는 lwjgl 게임 라이브러리를 사용하여 Java로 개발되었으므로 Java를 고수하려면 좋은 방법입니다. 물론 3D 개발은 다소 복잡합니다. 지식, 경험 및 인내에 따라 벨트 아래에서 더 많은 교육을받을 때까지 3D (또는 3D 기반 시스템에서 2D)를 기다리는 것이 좋습니다.

2D 솔루션 : Game Maker는 매우 단순하며 훌륭한 게임을 만드는 데 사용되었습니다. 스크립팅 언어를 매우 쉽게 선택할 수 있지만 1 년의 Java 경험이있는 사람 에게는 너무 간단 할 수 있습니다 . 순수 AS3 ( tutorial )을 사용하여 Flash에서 개발 합니다.이 기술은 쉽게 번역 할 수있는 Java에 가깝습니다.


1

XNA를 사용하는 것이 좋습니다. 커뮤니티가 커짐에 따라 상당히 유능하고 잘 지원되는 플랫폼입니다. XNA는 이제 프레임 워크가 그 어느 때보 다 많은 플랫폼 (Windows Phone 7 포함)에 제공되고 있기 때문에 생태계에서 "장소"를 찾기 시작했습니다. 그러나 더 중요한 것은 XNA를 사용하면 C # 및 일반 .NET 개발을 배우게됩니다. .NET 개발이 성장하고 있으며 고용 시장이 매우 건강하기 때문에 게임 개발을 시작하기로 결정했는지 여부에 관계 없이이 플랫폼에 대한 경험을 얻는 것이 좋습니다. 반면에 Java는 현재 한동안 천천히 죽어 가고 있으며 최근의 사건은 그 종말을 서두르는 데 도움이되었습니다. 내가 완료 한 것과 같은 CS 프로그램이 Java 중심적이라면 C # /. NET을 자신의 시간에 배우는 것이 좋습니다.

Java가 계속 작동하고 Java 개발 경력을 쌓기로 결정하더라도 결국 .NET 시스템과 통합해야 할 것입니다. 그러나 상황이 밝혀지면 경험은 장기적으로 도움이 될 것입니다.


indeed.com/jobtrends?q=java&l=indeed.com/jobtrends?q=.net&l=은이 두 가지에 대한 시장 수요를 나타냅니다. Java가 실제로 성장하고있는 것 같습니다.
David Young

나는 안드로이드 플랫폼의 성공으로 인해 자바 개발의 유입이 고려되지 않았다. 2008 년 말과 2009 년 초에 관련 일자리가 급증한 것과 관련이있을 것입니다. WP7과 iOS 용 MonoTouch 및 Android 용 MonoDroid의 가용성이 Java의 모바일 존재에 어떤 영향을 미치는지 확인하는 것이 흥미로울 것입니다.
Mike Strobel

1

게임 디자인에 관심이 있다면 , 카드 게임을 만들거나 프로그래밍이 전혀 필요없는 것으로 시작해보십시오. 이를 통해 익숙하지 않은 API, 언어 및 프레임 워크를 통해 경쟁하지 않고 게임의 디자인과 메커니즘에 집중할 수 있습니다.


1

당신은 또한 사용을 즐길 수 있습니다 http://Processing.org를 좋습니다. 그래픽 프로그래밍을 배우기에 훌륭한 환경입니다. 엄밀히 말하면 게임 개발 도구는 아니지만 제공해야 할 것이 많습니다. 언어는 자바의 확장 / 단순화이며 빠르게 배울 수 있습니다.


0

비 프로그래밍 관련 조언 :

깔끔한 프로젝트를 만들어 교수들에게 보여주십시오.

학교에서 1 학년과 2 학년을 마치고 프로그래머로 여름 일자리를 얻었습니다.


이것은 유용 할 수 있지만 OP가 다가오는 언어 / API 위기를 해결하는 것은 아닙니다.
공산주의 오리

0

게임 개발 만 찾고 있다면 왜 동시에 다른 언어를 배우나요? 새로운 언어를 배우고 싶지 않다면 Java를 고수 할 것입니다.

내가 아는 Java의 주요 옵션은 3D 그래픽 엔진이며 일반적으로 꽤 좋은 것으로 간주되는 jMonkeyEngine입니다.

그리고 OpenGL에 대한 Java 래퍼 인 jOGL이 있습니다. 이것은 자연스럽게 훨씬 낮은 수준입니다.

버퍼링 및 셰이더 바인딩 등을 다루는 것보다 논리를 다루고 싶다면 jMonkeyEngine을 사용하십시오. 시작하기 전에 깊이 들어가고 싶다면 jOGL을 사용하십시오.

C #과 Python에서 새로운 언어를 배우고 싶다면 아마도 C #이라고 말할 것입니다. 구문은 Java와 매우 유사하며 XNA 및 SlimDX는 그래픽에 매우 적합합니다. XNA는 더 높은 수준이며 당신을 위해 몇 가지 일을했습니다. 그러나 여기에는 Mono가없는 Windows 전용 제한이 있습니다.

파이썬은 매우 쉬운 언어입니다 (C ++ 1 년 동안 책에서 거의주의를 기울이지 않고 최대 일주일 정도 걸렸습니다). Pygame은 C의 SDL 라이브러리를 둘러싼 래퍼이므로 XNA와 동일한 기능을 가지고 있지 않을 것입니다.


0

Unity에 대한 또 다른 투표 . 다음 몇 년간의 CS 연구에서 C ++ 및 기타 언어를 사용할 수있는 충분한 시간이 있습니다. 당신의 목표가 게임을 개발하는 것이라면, 엔진 개발 작업에 본질적으로 묶이는 데 너무 많은 시간이 걸릴 것입니다. 엔진 디자이너가 되려면 분명히 돌아와서 더 낮은 수준의 구현을 시도하십시오.

Unity 엔진을 사용하면 대부분의 세부 사항을 추상화하여 게임 플레이 프로그래밍에 집중할 수 있습니다. 포럼 의 커뮤니티 와 Stack Exchange 기반 Unity Answers 는 매우 유용합니다. Javascript 또는 C #으로 프로그래밍 할 수 있습니다. Java에서 왔을 때 많은 자습서가 작성 되었기 때문에 Javascript로 시작했지만 C #으로 전환했습니다 (이는 매우 쉬운 전환이었습니다).

나는 XNA와 Pygame도 좋을 것이라고 생각하지만 (더 지루한 것들을 추상화했기 때문에) 나는 경험이 없습니다.

마지막으로, 첫 번째 게임으로 너무 큰 목표를 세우지 마십시오. 기능을 게임에 구현하는 데 시간이 얼마나 걸리는지 과소 평가하는 것은 매우 쉽습니다. 게임을 빠르게 플레이 할 수있는 핵심 게임 메커니즘으로 시작하십시오. 그런 다음 다른 요소를 추가 할 수 있습니다.

즐기세요!


0

XNA는 Java를 사용하는 경우 훌륭한 솔루션입니다. C #은 자바를 거의 동일하게 읽고 읽을 수 있으므로 새로운 구문을 배우지 않고도 정말 빠르게 뛰어들 수 있습니다. XNA 프레임 워크는 작업 할 수있는 훌륭한 API를 제공하며 일부 프로젝트를 시작할 수있는 무료 "Microsoft Permissive licence"공개 코드가 많이 있습니다.

Java를 사용하지 않는 것이 좋습니다. 대부분의 그래픽 API는 끔찍하며 3D 지원이 많지 않으며 일반적으로 Java는 느리게 실행됩니다. 대부분의 자바 앱에는 큰 문제가 아니지만 비디오 게임에는 많은 성능이 필요합니다.

C ++은 비디오 게임을 만드는 방법입니다. 그러나 java-> C ++에서 갈 때 꽤 혼란 스러울 것입니다. 대부분의 저수준 하드 코어 그래픽 프로그래밍은 실제로 C ++이 아니라 C 스타일이므로 더 많은 성능을 끌어 내기 위해 많은 포인터 산술을 할 것입니다. 흥미롭지 만 시간이 많이 걸립니다. 또한 시작하는 데 많은 시간이 걸릴 수 있습니다.

오우거와 같은 훌륭한 게임 엔진이 많이 있지만 먼저 작업을 수행하는 방법을 배우는 데 많은 시간을 소비하면 지나치게 복잡 할 수 있습니다.

많은 게임 아이디어가 최고 일 수 있다는 점에주의하십시오. 비디오 게임은 비싸고 개발 시간이 오래 걸리며 대규모 개발 팀이 있다는 것을 기억하십시오.

게임을 만들고 게임을하는 유일한 사람이 되려면 거의 2D 게임으로 만들어야하는데 (어쨌든 2D로 시작해야하지만) 정말 시작해야합니다. 정말 간단합니다.

재미있을 것이라고 상상할 수있는 거의 모든 것이 현재로서는 너무 야심적 일 것입니다.

내 조언 : Visual Studio 2010 Express가 없으면 무료로 제공하십시오. XNA 게임 스튜디오와 .net 프레임 워크를 다운로드하십시오. 4. XNA 데모를 다운로드하십시오. 데모를 실행 한 다음 코드를 살펴보고 무엇을 수행하는지 확인하십시오. XNA가 2D 게임을 수행하는 방법에 대한 설명서를 읽어보십시오.

그런 다음 좋아하는 구식 학교를 쉽게 선택하십시오. 팩맨? 탁구? 소행성? 우주 침략군들? 마리오? STUPID, STUPID 쉬운 것을 선택하십시오. 그런 다음 게임을 그대로 다시 만드십시오. 게임 디자인에 신경 쓸 필요가없는 새로운 API를 프로그래밍하고 배우는 것에 대해 걱정할 필요가 있습니다. 그것은 당신을 산만하게 할 것입니다.

그런 다음 마리오 클론을 만들거나 무엇이든 만들면 게임 플레이를 실험하고 새로운 것을 추가 할 수 있습니다.

작은 아기 발자국을 시작하면 훨씬 더 재미있을 것이고 더 많이 배울 것입니다.

C ++에서 Quake3 소스 코드를 수정하여 게임을 만들려고하면 정말 실망 할 것입니다. 실제로 작동하더라도 많은 것을 배우지는 않을 것입니다.

그냥 재미있다 : D


0

플래시

Flash의 AS3는 메모리 관리 및 헤더 파일 작성에 대해 걱정할 필요없이 중요한 OOP 개념을 둘러싼 환상적인 언어입니다. 또한 디스플레이 트리, 이벤트 시스템 및 기타 편리한 기능을 갖춘 완벽한 2D 게임 엔진입니다.

Flash 게임 개발자 커뮤니티가 많이 있으며, 대중적인 생각과 달리 오픈 소스 도구를 사용하여 Flash 게임을 개발할 수 있습니다. Windows를 사용하는 경우 FlashDevelop를 권장 합니다.

Flash는 Java 나 Unity를 제외한 다른 기술보다 플랫폼에 훨씬 친숙하다고 주장합니다. 99 %의 사람들이 데스크탑 브라우저에서 Flash 컨텐츠를 볼 수 있으므로 제작물을 전 세계와 쉽게 공유 할 수 있습니다. 대부분의 스마트 폰은 Flash 지원을 천천히 받고 있으며, 브라우저 내에서 Flash를 지원하지 않는 플랫폼 인 iOS의 경우 Flash CS5를 사용하여 앱을 만들 수 있습니다 (비용은 들지만).

AS3으로 지금 게임 제작의 기초를 배우기 시작할 때 C ++ 또는 C #과 같이 더 복잡한 무언가로 어려움을 겪는 것이 부끄러운 일이라고 생각합니다. AS3을 이해하면 나중에 다른 언어로 쉽게 전환 할 수 있습니다. 필자의 경우에는 Flash 개발자 였지만 Objective-C로 프로그래밍하는 방법을 배우고 iPhone 게임을 제작하는 방법을 배웠습니다. 자신에게 호의를 베풀고 http://www.flashgamedojo.com/을 방문 하십시오 -실망하지 않을 것이라고 생각합니다!

통일

유니티는 플래시와 같은 많은 장점을 가지고 있지만 3D입니다.

Unity를 사용하면 C # 또는 UnityScript (javascript-y)로 프로그래밍 할 수 있습니다. 오픈 소스는 아니지만 무료입니다. 매우 잘 지원되며 훌륭한 커뮤니티가 있습니다. 3D 게임 개발의 문제점은 대부분의 게임에 많은 예술과 자산이 필요하다는 것입니다. 이것은 2D 게임에서도 문제가 될 수 있지만 일반적으로 3D 아트는 훨씬 오래 걸리고 "프로그래머 아트"를 만들기가 훨씬 더 어렵습니다.

오픈 소스에 대한 메모

오픈 소스 소프트웨어를 사용하는 데 아무런 문제가 없지만 오픈 소스 이기 때문에 사용하는 경우에만 변화가 있습니다 . 가장 적은 마찰로 가장 빨리 배우는 데 도움이되는 최고의 언어와 도구를 선택하십시오. 같은 줄을 따라 "가장 어려운 것을 먼저 배우십시오"(즉, C ++)의 정신은 미쳤다. 실제로 배워야 할 것은 구문이 아닌 논리입니다. 따라서 수하물에 대한 수하물과 장벽이 가장 적은 언어를 배우십시오. 제 생각에는 AS3입니다.

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