나는 더 게임 디자이너는 아니지만 그러나 나는 많은 개체 내에서 깔끔하게 데이터와 로직을 캡슐화하여 복잡성과 역 동성 이런 종류의
Object Oriented Programming
허용 여기 일이있을 수 있습니다 뭔가를 ... 볼 수 있습니다. 이러한 개체는 개체 간 메시징을 사용하여 작업을 서로 위임하는 '구두로'상호 작용할 수 있습니다. 메시지의 발신자는 수신자에게 메시지를 해석하는 방법을 알 필요가 없으며, 수신자에게 전적으로 작업 방법을 남겨 둡니다. 실제 세계와 마찬가지로 위임을 통해 사물을 더 부드럽게 움직일 수 있습니다.
예를 들어 뉴욕시의 Del Posto에서 버섯 리조또를 주문할 때 주방으로 걸어 가서 직접 요리사와 이야기하여 주문 하시겠습니까? 앞치마를 두르고 리조또를 직접 준비합니까? 가장 가까운 버섯 농장으로 가서 자신의 버섯을 골 랐니? 아니, 그렇지 않아. 이 작업을 웨이터, 요리사 팀 및 농산물 공급자에게 각각 위임하기 만하면됩니다. 버섯 리조또를 얻으려면 웨이터에게 원하는 것을 알려주면됩니다. 나머지는 위임 사슬을 통해 자동으로 수행됩니다. 이와 같은 종류의 위임은 게임에 존재할 가능성이 큽니다.
이제 개체로 돌아갑니다. 어떤 객체는 부모 객체로부터 데이터와 로직을 상속받으며, 이런 방식으로 많은 양의 데이터/로직을 공유 할 수 있습니다. 이 형제 자매들을 불러야합니다. 게임 퀘스트의 예에서, 각 퀘스트는 부모 '퀘스트 부모'로부터 상속 된 기본 데이터 및 로직을 가진 자체 '퀘스트 대상'일 가능성이 큽니다. 퀘스트 형제는 특정 퀘스트와 관련된 추가 데이터/논리를 추가하여 서로 구분할 수 있습니다.
게임의 동작 (게임 메뉴에서 선택한 것)에 따라 게임 개체가 형제 중 하나에 대한 활성 퀘스트 개체를 스왑 아웃 할 수 있습니다. 종종, 이것은 정말 간단한 명령을 수행 할 수 있습니다 (의사 코드에서 특정 프로그래밍 언어를 모방하지) :
gameObject.activeQuest -> getCurrentObject();
//returns the object containing all of the data/logic of the current active quest:
Gibbons_GoldenArtifacts
//Let's say the quest description is "Scour the Catacombs of Gibbon for a
mysterious treasure"
gameObject.activeQuest -> setCurrentObject(Gibbon_DefeatGhost)
//sets the activeQuest object (note that QUEST OBJECT contains baseline data/logic)
//assuming, say, Gibbon_DefeatGhost is an object like so:
Gibbon_DefeatGhost={QUEST OBJECT};
Gibbon_DefeatGhost.extend(
description="Defeat Gibbon's ghost to retrieve his golden artifacts";
objective="Defeat Gibbon's ghost";
questNPC="Gibbon's ghost";
questLocation="Gibbon's Inner Sanctum"
questTriggers[1]="When PLAYER enters Gibbon's Inner Sanction: Release Gibbon's ghost";
questTriggers[2]="When Gibbon is slain: Drop Gibbon's golden artifacts"
)
을 그 시점에서 게임 객체 자체가 아마 활성 탐구와 상호 작용에 객체는 항상 가지고있는 것과 같지만 활성 퀘스트 객체는 형제 객체 형제와 다른 방식으로 상호 작용을 인식하여 다른 게임 경험을하게됩니다.
희망 나는 완전히이 하나에 광대 fudging ...
이 공식 세계 편집기에서 게임을 열 수 있습니다에 대한 답을 찾을 수 예쁜 직접적인 방법 및 아니에요 그들이이 데이터를 어떻게 모델링하는지보십시오. 편집기가 게임에 포함되어 있습니다. –