문제

인공 생활에 관한 몇 가지 기사 (매우 흥미로운 주제)와 몇 가지 질문과 함께 몇 가지 질문을 읽은 후, 나는 (매우, 매우, 매우) 간단한 시뮬레이터를 설계한다는 아이디어를 가지고 장난감을 시작하기 시작했습니다. 그래픽이 필요하지 않습니다. 내가 질문을 간과했다면 자유롭게 지적하십시오.

내가 말했듯이, 이것은 Sims 레벨 시뮬레이션이 아닙니다. 나는 그것이 "허용 가능한 프리웨어"수준에 거의 도달 할 것이라고 생각합니다. 그것은 단순히 학습 운동이며 휴식 시간 동안 내 기술을 유지하는 것입니다. 기본 전제는 일반인이 만들어 졌다는 것입니다. 이름, 높이 또는 그와 비슷한 것 (내가 말한 것처럼 간단한), 그것이받을 수있는 유일한 것은 "연결"및 일반적인 "사용", "픽업"및 "룩"능력 목록입니다.

내 첫 번째 질문 협회와 관련이 있습니다. 그러한 것들을 효율적으로 처리하는 방법으로 무엇을 추천합니까? 나는 비교적 쉽게 열쇠가 원하는 것 (음식, 먹고, 휴식 등)이라는 비교적 쉽게 설정된 멀티 맵을 생각하고 있었고, 다른 비트 (죄송합니다, 내 마음이 랩 링)는 그 필요와 관련이있는 것입니다.

예를 들어, 냉장고가 있다고 가정 해보십시오. 냉장고에는 음식이 들어 있습니다 (일반적인 기본 물체). 처음에 그 사람은 냉장고를 음식과 연관시키지 않지만 음식을 굶주림과 연관시킵니다. 그래서 기아가 자라면 음식을 임의로 찾기 시작합니다. 음식이 안에 있지 않으면 음식을 찾기 위해 물체를 "사용"합니다. 음식과의 알려진 연관성이 없기 때문에 Willy-Nilly를 사용합니다 (아마도 가장 가까운 물건을 찾고 확장 할 것입니다). 냉장고를 사용/열면 음식이 보이며 냉장고에 음식이 들어있는 연결 (읽기 : "음식, 냉장고"삽입)을 만듭니다.

이제 나는 이것이 나타나는 것보다 훨씬 더 복잡 할 것이라는 것을 알고 있으며, 나는 그것을 망칠 준비가되어 있습니다. 문제는 멀티 맵이 (아마도) 기하 급수적으로 확장되는 협회 목록에 적합 할 것인가? 그렇지 않다면 무엇이 될까요?

두 번째 질문 나는 아마 훨씬 쉽다. 간단히 말해서, 일반 객체/항목 인터페이스가 대부분의 항목에 적합합니까? 다시 말해, 일반적인 "사용"인터페이스가 내가 의도 한 것에 대해 작동합니까? 나는 이것을 잘 설명하고 있다고 생각하지 않는다.

어쨌든, 모든 의견은 감사합니다.

도움이 되었습니까?

해결책

이 작업을 하드 코어 개발 프로젝트로 수행한다면 Java Reflection과 동등한 것을 사용하는 것이 좋습니다 (선택한 언어를 대체). 스타터 노력으로 장난감 프로젝트를하고 싶다면 다음 근거에 따라 적어도 자신만의 간단한 버전의 반사를 굴리는 것이 좋습니다.

환경의 각 아티팩트는 특정 기능을 제공합니다. 그 사실의 간단한 모델은 가상 문자가 만난 각 객체에 "동사"가 적용되는 것을 묻는 것입니다 (해당 객체의 현재 상태에 대한 의존성을 포함하여). 예를 들어, 당신의 캐릭터는 냉장고, 시리얼 상자 또는 책을 "열"할 수 있습니다. 일단 책이 열리면 캐릭터가 읽거나 닫을 수 있습니다. 냉장고가 열리면 캐릭터가 눈에 보이는 내용 목록을 가져 오기 위해 "외관"을 할 수 있고, 그에서 물체를 제거하고, 객체를 넣을 수 있습니다.

요점은 일반적인 상황에는 캐릭터가 눈에 보이는 내용을 보려면 주변을 둘러보고, 현재 상태를 결정하기 위해 객체를 쿼리하거나 그로 수행 할 수있는 일 (예 : "What-State"및 "What-can-i-do "일반 동사는 모든 대상에 적용 할 수있는 일반적인 동사입니다), 현재 상태, 대상의 상태 및 동사 목록에 대한 지식을 사용하여 다양한 일을 시도합니다.

일련의 긍정적이고 부정적인 피드백을 구현함으로써, 시간이 지남에 따라 캐릭터는 어떤 상황에서 어떤 상황에서 다른 행동에 관여 해야하는지 "배울 수 있습니다". (이 시뮬레이션을 사용자에게 피드백 제공에 참여하도록 요청 하여이 시뮬레이션을 대화식으로 만들 수 있습니다.)

위는 스케치 일 뿐이지 만 아마도 흥미로운 아이디어를 제공 할 수 있습니다. 재미있게 보내세요! ;-)

다른 팁

첫 번째 질문 :

내 이해는 당신이 일대일의 관계를 가지고 있다는 것입니다. 그렇습니다. 멀티 맵은 나에게 적합 해 보입니다.

두 번째 질문 :

예, 객체의 일반적인 인터페이스가 적절하다고 생각합니다. 아마도 비슷한 것을 사용합니다 쉬다 객체 상태를 조작합니다.

개발자와 함께 팟 캐스트를 들었습니다. 고귀한 원숭이 시뮬레이션, 당신에게 흥미로울 수 있습니다 - 개념적으로 그리고 아마도 codewise, 당신이 할 수있는대로 소스 코드에 액세스하십시오, 만큼 잘 Binaries를 다운로드하십시오.

팟 캐스트였습니다 Floss Weekly 31 Randal Schwartz와 Leo Laporte와 함께.

LISP (SBCL)와 함께 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top