게임 개발은 다른 소프트웨어 개발과 어떻게 다릅니 까? [닫은]


18

탄탄한 범용 소프트웨어 개발자의 경우 기본적으로 또는 정도의 차이로 게임 개발과 다른 점은 무엇입니까?

나는 Tic-tac-toe, Tetris 및 brute-force sudoku solver (UI 포함)와 같은 장난감 게임을했고 이제는 중소 규모 프로젝트 (단독 개발자가 아닌 중형 프로젝트)에 착수하고 있습니다. 이 특정 프로젝트에서 내가 찾은 것 중 하나는 모든 것이 상태에 영향을 미치므로 모든 객체가 무수한 방식으로 다른 모든 객체와 상호 작용할 수 있기 때문에 우려의 분리가 훨씬 어렵다는 것입니다.

지금까지 나는 만족을 위해 코드를 합리적으로 깨끗하게 유지했지만 사소한 게임에서 깨끗한 코드를 유지하는 것이 일상 업무보다 훨씬 어렵다는 것을 알았습니다.

내가하고있는 게임은 턴 기반이며 그래픽은 상당히 간단합니다 (웹 기반, 대부분 DOM 조작을 통해). 실시간과 3D 작업은 실제로 적용되지 않지만 여전히 그래야합니다. 흥미있는 사람들에 대한 답변에 관심이 있습니다. 그래도 일반적인 게임 로직에 관심이 있습니다.

추신 :이 태그를 자유롭게 태그하십시오. 적용 가능한 태그가 확실하지 않습니다.

답변:


23

한 가지 큰 차이점이 있습니다. 내 생각에, 그것은 정말로 중요한 유일한 차이점입니다.

왜 다른지에 대한 기술적 세부 사항을 살펴볼 수 있습니다. 3D 엔진, 입자 물리학, 수많은 다른 것들이 작용합니다.

그러나 다양한 형태의 소프트웨어에는 문자열이 첨부되어 있습니다. 모델링 소프트웨어는 동일한 작업을 많이 수행해야합니다. 중요한 모든 소프트웨어에는 사용해야하는 특수 라이브러리가 있습니다.

그렇다면 게임의 차이점은 무엇입니까?

소프트웨어는 비즈니스 요구를 충족 시키도록 설계되었습니다. 재고 시스템을 원하십니까? 처리 할 항목 유형을 정의 할 수 있습니다. 생산 일정에 대해 원하는 것을 정의 할 수 있습니다. 당신은 모든 것을 할 수 있습니다. 또는 뱅킹 소프트웨어를 원하는 경우 원하는 소프트웨어를 정의 할 수 있습니다.

게임의 비즈니스 요구는 "재미"입니다. "fun"에 대한 기술 사양을 작성하십시오.

개발자로서의 겸손한 견해로는 게임을 일반 소프트웨어와 다르게 만드는 것입니다. "좋아요!이 소프트웨어는 이제 고객의 요청에 따라 완성 된 기능입니다!" 그들이하고 싶은 것은 즐겁기 때문입니다.

즉, 재미있는 무언가를 위해 3D 그래픽과 화려한 물리학이 필요하지 않습니다. 사람들이 왜 여전히 테트리스를 플레이합니까? 그 물리학은 "블록을 아래로 이동" "블록이 경계를 벗어나지 않도록"및 "무언가에 부딪 칠 때 블록을 정지"로 구성되며, 수년에 걸쳐 다른 버전보다 더 멋진 그래픽을 가진 수많은 버전이 있었지만 결론은- 재미있다!

따라서 훌륭한 게임 개발자가 되려면 일반 소프트웨어 개발자로서 배운 것을 버리지 마십시오. 여전히 매우 유용한 것들입니다. 또한 @Sion은 일반적인 소프트웨어와 마찬가지로 구성 요소를 분리하는 데 적합합니다. 그러나 게임에 추가 할 수있는 가장 중요한 기능은 재미 있습니다. 재미 재미 재미 재미 재미. 그것이 게임 개발이 존재하는 이유입니다. 그것이 게임을 성공시키기 위해 필요한 것입니다. 그리고 이것을 믿어도 재미는 있지만 재미있게 만드는 것은 10 배입니다!

게임 개발에 행운을 빕니다! :디


2
"유용한"을 "유용한"으로 바꾸면 제품 설계와 동일한 문제가 발생한다고 생각합니다 (클라이언트 용 소프트웨어 작성과 반대). 그래도 정도의 차이가 있다고 생각합니다. 사람들은 때때로 무엇이 유용한 지에 대해 틀리며, 무엇인가“재미있는”것이 무엇인지에 대해서는 일반적으로 단서가 없습니다. (+1 그렇지만)
Davy8

1
성인 영화 산업에 관한 악명 높은 대법원 판결과 60 년대의 "하드 코어"에 대한 분류가있었습니다. 법무부는 "[정의]에 성공할 수는 없지만 그것을 볼 때 그것을 안다"고 말했다. 재미도 마찬가지라고 생각합니다. 내 말은, 나는 게임에서 내가 좋아하는 것들을 적을 수는 있지만, 종종 게임을하고 "무슨 일이 재미있어?" (분명히 알고 싶어서 내 게임 중 하나에서 다시 만들 수 있습니다 !!) 사람들은 무엇을 재미있게 만드는지 모르지만, 언제 그것을 발견했는지는 확실히 알고 있습니다!
corsiKa

나는이 포스트를 정말로 좋아했다. 당신이 정말 맞습니다. 나는 게임 개발을 정말로 좋아하지만 실제로 "일반적인"사람들에게 "재미"가 무엇인지 볼 수는 없습니다. 내가 좋아하는 게임과 내가 좋아하는 다른 게임 만 만드는 효과가있었습니다 :)
Phil

1
@ 필 그리고 괜찮습니다. 당신에게 재미있는 것이 무엇인지 안다면,이 세상에는 단지 수백 개의 문자 원형 만 있다는 것을 기억해야합니다. 직장을 둘러보고 동료의 성격을 고등학교 나 대학교에 진학한 사람들과 비교하십시오. 당신은 그들 중 대부분이 일치 할 수 있습니다 찾을 수 있습니다. 뭔가 재미있는 것이 있다면 아마 당신이 알고있는 것보다 더 많은 사람들에게 재미있을 것입니다. 요령은 그들이 게임을 즐길 수 있도록 게임에 대해 알게하는 것입니다!
corsiKa

이것이 지금까지 본 최고의 답변입니다. 소프트웨어 비즈니스 틈새 아이디어 등을위한 수많은 기사가 있지만 게임 개발에 관한 기사는 많지 않습니다. 흠.
johnny

21

저는 주로 전통적인 소프트웨어 개발자가 아닌 게임 개발자이지만 몇 가지 중요한 차이점이 있다고 생각합니다.

이것들은 분명히 몇 가지 일반화 이며 포괄적이지 않습니다 :
더 큰 팀. 더 다양한 배경 (아티스트, 프로그래머, 프로듀서, 각각 더 많은 변형이 있음) 더 긴 개발주기. 더 높은 수준의 성능. 대규모 프로젝트. 더 크고 비용이 많이 드는 고장 위험. 보다 스트레스가 많은 환경.

객체 상호 작용 및 아키텍처 배치와 관련하여 시스템을 올바르게 분리 할 수 ​​있습니다. 게임 플레이 오브젝트와 행동은 서로간에 그리고 이러한 시스템에 명확하게 의존합니다. 그것은 게임의 본질이지만 (말장난 의도로),이 모든 시스템을 하나의 응집력있는 유닛으로 결합하고, 그에 아무런 문제가 없습니다. 모든 것의 규모가 익숙한 것보다 크기 때문에 그렇게 보일 수 있습니다.

쉽게 식별 및 분리 된 시스템?

  • 충돌 감지
  • 충돌 대응
  • 물리학
  • 생기
  • 그래픽 (2D 및 3D)
  • 인공 지능
  • 사용자 입력
  • 파일 입출력
  • 네트워킹

내 특정 게임의 경우 (1 기반 및 타일 기반이므로 실제 충돌, 물리학 없음, 그래픽은 스프라이트로 구성되어 더 많은 JQuery 던지기) 그것, 2 플레이어 AI 아직 아직 사용자 입력은 대부분 RESTful 방식으로 처리되며 네트워킹 측면도 다루고 있습니다.) 게임 IO 저장 /로드 이외 전형적인 게임에는 어떤 종류의 IO가 필요합니까?
Davy8

4
이 게시물의 대부분에 동의하며 +1을 얻지 만 "더 크고 더 비싼 실패의 위험"줄에 의문을 제기합니다. 은행, 대규모 제조 회사 또는 트래픽이 많은 웹 사이트에서 근무하는 경우 실패로 인해 중단 시간당 분당 수십만 개의 장애를 측정 할 수 있습니다. 한 시간 안에 몇 개월 동안 전체 급여를 지불 할 수있는 일부 게임 상점보다 더 많은 매출 손실, 고객 손실 등을 잃을 수 있습니다. 나는 그것이 크지 않다는 것을 말하는 것이 아니라 전통적인 소프트웨어보다 더 크다는 것을 확신하지 못한다는 것입니다.
corsiKa

@glowcoder 나는 당신이 무슨 말을하는지 알고 있지만, 또한 시온이 만들고자하는 요점을 이해한다고 생각합니다. 게임의 경우 일반적으로 전체 프로젝트가 성공 또는 실패이며, 일반적으로 답변에서 언급 한 요인입니다 재미 있나요? 당신은 버그에 대한 핫픽스를 할 수 있지만 재미 부족 핫픽스를 할 수 없습니다.
Davy8

3
나는 "더 큰 팀"이 일반화 되어도 사실이라고 확신하지는 않는다. 물론 AAA 게임에는 큰 팀이 있지만 복잡성에 해당하는 비 게임 소프트웨어 제품도 있습니다. 방대한 수의 게임은 개인 또는 2 ~ 3 명의 팀이 제작합니다.
피터 테일러

@ Davy8 아, 게임의 상업적 성공 만이 얼마나 재미 있는지에 비례한다면. :)
tenpn

2

게임 프로그래밍이 다른 응용 프로그램 도메인과 다른 것으로 생각하지 않습니다. 기술을 다른 유형의 응용 프로그램 도메인으로 가져갈 때마다 항상 차이가 있기 때문에 원하는대로 전환이 매끄럽지 않다는 것을 알게 될 것입니다. 데이터베이스 응용 프로그램에서 작동하는 것은 임베디드 앱에서 잘 작동하지 않는 많은 패턴 / 관용구를 가지고 있으며, 많은 패턴 / 관용구가있는 실시간 시스템에서 잘 작동하지 않는 많은 패턴 / 관용구가 있습니다 게임 프로그래밍에서는 작동하지 않습니다. 그러나 게임 프로그래머는 게임 프로그래밍 영역을 떠날 때도 같은 문제가 있습니다. 그것은 모두 당신이 익숙한 것의 문제입니다.

그렇기 때문에 대부분의 프로그래머가 실제 작업 (낮은 수준의 그래픽 및 사운드)을 처리 할 필요가없는 컴퓨터의 일부로 작업해야하기 때문에 많은 사람들에게 게임 프로그래밍이 더 어려워 보입니다. 사람들은 걱정의 분리 때문에 편안하지 않습니다. 우려의 분리를위한 올바른 선택을 결정하는 데 항상 어려움이 있지만, 귀하가 겪고있는 우려의 분리와 관련된 어려움은 단순히 새로운 문제 영역으로 이동하는 것입니다. 응용 프로그램을 몇 개 빌드하면 다른 것과 비슷해지며, 원하는 것을 배우고 원하지 않는 것을 사용하지 않습니다.


0

이 특정 프로젝트에서 내가 찾은 한 가지는 모든 것이 상태에 영향을 미치며 모든 객체가 무수한 방식으로 다른 모든 객체와 상호 작용할 수 있기 때문에 우려 분리가 훨씬 어렵다는 것입니다.

나는 거기에 답이 있다고 생각합니다. 많은 상호 작용이 있습니다. 나는 XNA (C #)로 몇 가지 게임을 만들었습니다. 이제 전략 시뮬레이션 게임이라고 말한 것처럼 중형 게임을하고 있습니다. 지금 거의 2 개월 동안 작업하고 있으며 아무런 도움없이 혼자서 작업하고 있습니다. 내 코드를 단순하게 유지해야합니다. 내가 생각하는 한 가지 큰 차이점은 기능과 그리기를위한 클래스를 이해하고 디자인하는 것입니다. 이것은 프로그램을 더 깨끗하게 만드는 데 도움이됩니다. 물론 게임을하는 경우 이미지 (2d 또는 3d) 및 음악 (또는 사운드)과 같은 추가 리소스가 필요합니다. 그래서 차이점이 있습니다. 더 힘들다고 생각하지만 매우 재미 있습니다.


0

게임 프로그래밍이 더 재미 있다고 생각합니다. 지속적으로 게임을 테스트하고 다른 물리학을 구현하여 다른 행동을 유발할 수 있습니다.

내 경험상 게임 프로그래밍은 실제로 소프트웨어 개발에 비해 훨씬 재미있다. 소프트웨어 개발에서 준수해야 할 특정 비즈니스 규칙이 있으며 지루하지 않습니다. 재미없는 소프트웨어를 만들고 있습니다. 소프트웨어를 사용하는 것은 훌륭하고 도움이되고 유용하지만 재미는 없습니다.

게임은 재미있다. 어쩌면 그저 나일 수도 있지만 도구 사용에 관계없이 게임 개발이 기존 소프트웨어 개발보다 훨씬 흥미롭고 흥미 롭습니다.

추신 : 저는 소프트웨어 개발, HTML5, Asp.Net, C # 등을위한 최신 도구를 사용합니다. DirectX, UDK, XNA, Unity가 코딩하기에 더 재미 있습니다.

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