2010-05-02 6 views
2

간단히 말해서 2D mmorpg를 만들고 마지막 "mmo"와는 달리 개발을 시작했습니다. 새로운 게임 내 기능을 추가하거나 기존 기능을 수정하려고 할 때이 기능이 잘 확장되고 잘 작동하는지 확인하고 싶습니다.확장 가능한 "컴포넌트"기반 게임 '프레임 워크'를 설계하는 방법을 배우기위한 훌륭한 자습서 또는 자료가 있습니까?

처음 몇 천 줄의 코드에서 아바타 채팅을 시도한 결과 기본 기능이 게임에 추가되면서 코드 품질이 저하되고 새로운 기능을 추가하거나 이전 기능을 수정하는 기능이 저하되었습니다. 더 많은 기능을 추가 했으니까요. 어떤 일이 커지면 큰 곤경에 빠졌습니다.

이번에는 정말 내 몸이나 메일 시스템에서 미니 게임을 즐기는 것과 같은 기능을 추가하고 제거하기 쉬운 게임 프레임 워크를 만들 수있는 디자인을 찾아야합니다. 친구 목록 또는 대화 형 항목이있는 새로운 공용 영역).

아마도 구성 요소 기반 접근 방식이 내가 원하는 대상 일 수 있다고 생각하지만 실제로는 잘 모르겠습니다. mmorpg 디자인과 2 차원 게임 엔진 아키텍처에 대한 문서를 읽었지만, 기본적으로 기본 게임에 새로운 기능을 "플러그인"할 수있는 게임 프레임 워크를 디자인하는 방법에 대해서는 설명하지 않았습니다.

누군가가 내 뜻을 이해하기를 바랍니다. 어떤 도움을 주시면 감사하겠습니다.

답변

3

예, 나는

먼저 배치해야합니다 ...

기본적으로

, 당신은 고전적인 OOP 디자인, 비즈니스 소프트웨어 코더가 사용하는 것과 동일한 하나를 사용해야합니다 ... 당신이 원하는 것을 얻었다 기본 엔진에서 엔진에 "모듈 로더"또는 일반적인 OOP 스타일 인터페이스가 있어야하며로드 된 모듈을 .dll과 같이 코드화하거나 OOP를 사용하여 소스 코드에서 직접 코딩합니다 스타일 인터페이스와 절대 서로 의존하는 모듈을 허용하지 ...

당신의 코드 내에서도 통신은 ALW이어야합니다. AYS는 인터페이스를 사용하여 모듈에 "공용"변수를 넣지 않고 다른 곳에서 사용하지 않습니다. 그렇지 않으면 awfull 및 지저분한 코드로 끝납니다.

하지만 게임을 제대로 할 수 있다면 중간에 내 게임의 전체 게임 라이브러리 (예 : 비디오, 마우스, 키보드, 오디오에 액세스하는 API)를 변경 한 것입니다. 개발 중 ... 단지 논리 파일과 게임 라이브러리 사이의 인터페이스를 만든 하나의 파일을 다시 코딩해야했습니다.)

+0

게임을 제외한 모든 것에 OOP를 사용할 수도 있지만 OOP를 게임 로직, 게임 기능 등에 사용하지 않아야합니다. 믹스 앤 매치 - 이벤트/비동기 트리거링 및 입력 용 실행 루프 사용 그리고 네트워크가 아닌 게임 물건에 명령형 OOP를 사용하고 게임 자체에 ES를 사용합니다. 대부분의 경우 RPG가 매우 단순하지 않으면 OOP는 이러한 종류의 응용 프로그램을위한 핵심 게임 코드를 상당히 낮은 품질로 유지 관리하기가 어렵습니다. – Adam

+0

OOP를 직접 싫어하고 코드에 절차 적 내용을 넣는 것은 사실이지만, 내가 말하는 것은 의미가 없다고 말해야합니다. – speeder

+0

"이벤트 트리거링", "asynch", "ES"등이 의미가 없으면 Google은 귀하의 친구입니다. ES의 경우 "엔터티 시스템"을 검색 문구로 사용하십시오. – Adam

6

게임 내에서 구성 요소 기반 시스템을 검색하면 당신이 실제로 요구하는 것과는 아주 다른 것입니다. 그리고 최선의 방법은 어쨌든 아직 합의 된 것과는 거리가 멀습니다. 그래서 그렇게하지 않는 것이 좋습니다. 당신이 정말로 말하고있는 것은 정말로 게임에만 국한된 것이 아니며 MMO를 신경 쓰지 않습니다. 확장 성과 개선을 가능하게하는 유지 보수 가능한 코드를 작성하는 것만으로도 게임이 인기 있고 중요하게되기 훨씬 전에 비즈니스 소프트웨어의 문제점이었습니다.

이 문제를 해결하는 데는 주로 두 가지가 있습니다. 첫째, 좋은 사양과 결과 디자인을 필요로하므로 향후 요구 사항을 이해할 수있게되므로 지금 작성한 시스템을보다 쉽게 ​​확장 할 수 있습니다. 플러그 - 인 아키텍처는 플러그 - 인하고자하는 것을 정확히 알지 못하면 잘 작동하지 않을 수 있습니다. 100 페이지짜리 디자인 문서를 작성해야한다고 말하는 것은 아니지만 적어도 아이디어를 브레인 스토밍해야합니다. 계획을 세우고 공통점을 찾고 있습니다. 따라서 A 피쳐를 코딩 할 때 미래 피처 B를 염두에두고 작성해야합니다.

둘째, 훌륭한 소프트웨어 엔지니어링 원칙이 필요합니다. 이는 당신의 코드가 사용하기 쉽고 사용하기 쉽다는 것을 의미합니다. 예. SOLID 원칙을 읽고 이러한 5 가지 아이디어가 유용한 이유를 이해할 수있는 시간을 가지십시오. 이러한 규칙을 따르는 코드는 미래의 필요성에 따라 쉽게 변형 할 수 있습니다.

코드를 개선하는 세 번째 방법이 있지만 아직 도움이되지는 않습니다. 더 많이 쓰면 코드가 좋아지며 코딩에 대해 더 많이 배울수록 좋습니다. MMO를 사용하면 씹을 수있는 것보다 훨씬 더 많이 물어 뜯을 가능성이 있습니다. 자격을 갖춘 전문가 팀조차도 그 규모의 프로젝트를 시도 할 때 유지 보수가 불가능한 코드 얽힘으로 끝나기 때문에 그렇게하는 것이 놀랄 일도 아닙니다. 그러나 그들은 완료까지 볼 수있는 코드가 얽혀 있습니다. 종종 그것이 진행되는 것이 어려워 질 때마다 멈추거나 다시 디자인하는 것이 아닙니다.

1

정확하게 생각하는 것은 this 문서에 나와 있습니다. 그것은 게임을 구축하는 멋진 방법입니다 as I have blogged about, 그리고 기사를 시작하는 훌륭한 리소스입니다.

관련 문제