2012-02-11 4 views
1

나는 게임에서 문자로 대화의 일부 라인을 포함하는 75 가지 이상의 텍스트 파일을 가지고 있습니다. 텍스트 파일은 게임이 현재 상황에 대한 올바른 출력으로 구문 분석하는 특수 명령을 가지고 있습니다. % PlayerName %처럼 게임에 대화의 그 자리에 플레이어의 이름을 넣으라고 말합니다.어떻게 구현해야합니까?

플레이어가 저장된 게임을 전환 할 때 현재 상황이 변경되지만 다른 경우에는 잠시 동안 동일하게 유지됩니다. 가장 빠른 대화에서 약 1/2 초 간격으로 대화를 나눌 것입니다.

어떻게해야합니까? 내가 구현 한 두 가지 구현은 찬반 양론이있는 것처럼 보입니다.

  1. 파스 메모리로 모든 파일 대화의 각 라인 및 출력에 영향을 미치는 상황을 변경할 때마다 각 을 다시.
  2. 대화의 특정 비트가이라고 말하면 해당 파일 에서 약간의 대화를 읽고 구문 분석하십시오.
  3. 두 가지 모두 잘못되어 완전히 다른 것을해야합니다. 내가 하나를 사용하는 경우 하드 드라이브가 열리고 한 번에 75 개 파일을 읽는이 적어도 작은 더듬되지 않습니다,

을 (설명)? 이것은 잘못된 행동입니다.

두 개를 사용하면 사용자가 게임을하는 동안 오히려 여러 파일을 열고 닫는 속도가 빨라집니다. 웬일인지 이것을하는 것은 또한 틀린다고 느낀다.

+0

문자의 특정 역할에 대한 대화를 기반으로 한 텍스트 파일이 아닙니까? 또는 각 파일에는 모든 문자에 대해 임의의 대화가 있으며 필요시 특정 문자 하나를 선택합니까? –

+0

각 파일에는 특정 문자가 수행하는 특정 작업을 기반으로하는 대화가 들어 있습니다. 대화는 파일에서 무작위로 선택됩니다. – WildBamaBoy

+0

모든 문자가이 동일한 작업을 수행 할 수 있습니까? 아니면 한 문자 만 주어진 작업을 수행 할 수 있고 나머지는 다른 작업을 수행 할 수 있습니까? –

답변

1

RAM을 조금 차지하는 것이 문제가 아니며 파일에 기가 바이트의 대화 상자가 포함되어 있지 않은 경우 이미 특정 라인을 식별하는 응용 프로그램 시작시 모든 파일을 읽을 수 있습니다 (예 : 모든 라인의 배열 만들기 빠르고 간단하게 액세스 할 수 있지만 게임에서 라인이 실제로 사용될 때까지 지연된 변수를 대체합니다. 간단한 문자열 대체로 인해 게임에서 눈에 띄는 지연이 발생해서는 안됩니다.

메모리에있는 모든 파일을 유지하는 것이 불가능한 경우에도 플레이어의 현재 위치에서 직접 액세스 할 수있는 대화 상자가 포함 된 다음 또는 세 개의 파일을 계속 볼 수는 있습니다. 새로운 파일은 플레이어의 진행에 따라 백그라운드에서로드됩니다. 이렇게하면 필요한 라인을 항상 즉시 사용할 수 있으며, 새 파일을 몇 분마다로드해도 IO가 너무 많이 발생하지는 않습니다.

+0

RAM은 문제가되지 않습니다. 이것은 의미가 있습니다. 나는 이것을 할 수있다. – WildBamaBoy

0

jar/zip 파일에 내용을 넣으십시오. 올바른 인터페이스 (클래스 로더 또는 자신의 zip 관리자)를 사용하는 경우 파일은 열린 상태로 유지되고 액세스는 상당히 효율적입니다.

관련 문제