게임 제작의 전반적인 컨셈

Posted by NUL PROG. : 2007. 4. 2. 09:33
기본적으로 로그라이크류를 지향 한다.

(참고 http://www.roguelike.org/ http://www.roguelikedevelopment.org/)

그래픽
  1. 최대한 단순화 (제작자의 편의를 극대화 -_-;)
  2. 48x48 타일 기반
  3. 1024x768 해상도 16~24 bIT Color 의 윈도우


사운드
  1. 정말로 할일이 없어서 미칠 지경일때 생각하자.


입력
  1. 키보드 입력 기반 (스크롤 이나 위치 이동 등의 몇몇 기능은 마우스도 사용 가능)


세계관
  1. 복합적인 세계관의 RPG로 65535년 이후의 어느 별...
  2. 99% 한글화 :
    이쪽 세계는 한글을 쓴다 (이유나 유래는 알수 없다 -_-;) 한글이 아니면 국산 로그라이크류로의 장점이 사라진다
  3. 월드맵을 통한 야외맵과 던전맵이 모두 갖추어져야 한다. 가능하면 대부분을 자동 던전 생성 알고리즘을 사용한다.


직업 - 일단 시작은 평범하다...
  1. 전사
  2. 도적
  3. 마법사
  4. 사제
  5. 사냥꾼


아이템
  1. 랜덤으로 형성한 아이템 + 고유 아이템 으로 다음의 특징을 갖는다
    ABILITY_NORMAL: array[Low(TAbilityNormal)..High(TAbilityNormal)] of String = (
    '화염 속성의 ', '냉기 속성의 ', '비전 속성의 ',
    '암흑 속성의 ', '신성 속성의 ', '자연 속성의 ',
    '화염 저항의 ', '냉기 저항의 ', '비전 저항의 ',
    '암흑 저항의 ', '신성 저항의 ', '자연 저항의 ',
    '마력 재생의 ', '체력 재생의 ',
    '쾌속의 ', '신속의 ',
    '방어력의 ', '힘의 ', '민첩성의 ',
    '체력의 ', '마력의 ', '정신력의 ',
    '지능의 ', '전투력의 ',
    '치명타의 ', '정확성의 ');
    ABILITY_OFFENSE: array[Low(TAbilityOffense)..High(TAbilityOffense)] of String = (
    '',
    '참수 ', '흡혈 ', '혼란유발 ', '상처유발 ', '반격 ',
    '밀치는 ', '기절유발 ', '빙결유발 ', '폭발 ', '저속화 ',
    '연격 ', '침묵 ',
    '화염 저항 약화 ', '화염 저항 약화 ', '비전 저항 약화 ',
    '암흑 저항 약화 ', '신성 저항 약화 ', '자연 저항 약화 ',
    '속공 '
    );
    ABILITY_DEFENSE: array[Low(TAbilityDefense)..High(TAbilityDefense)] of String = (
    '',
    '보호막 ', '매끄러운 ', '기절방지 ', '졸음방지 ',
    '혼란방지 ', '단열 ', '보온 ', '상처유발방지 ',
    '시력보호 ', '머리보호 ', '안정된 ', '음성보호 ',
    '유연성 ', '잠수 ', '해독 ', '완벽한 ',
    '물리 공격 면역 ', '화염 마법 면역 ', '냉기 마법 면역 ',
    '비전 마법 면역 ', '임흑 마법 면역 ', '신성 마법 면역 ',
    '자연 마법 면역 ', '물리 공격 흡수 ', '화염 마법 흡수 ',
    '냉기 마법 흡수 ', '비전 마법 흡수 ', '임흑 마법 흡수 ',
    '신성 마법 흡수 ', '자연 마법 흡수 ' );
    BOOLEAN_STATUS: array [Low(TBooleanStatus)..High(TBooleanStatus)] of String = (
    '',
    '만족스러운 기분이 느껴집니다.', // bsSlowDigest
    '투명합니다', // bsInvisible
    '희미한 바람이 느껴집니다', // flying
    '용기가 치솟습니다', // bsCanDash
    '온 몸에 힘이 솟습니다', // bsCanJum
    '몸이 매우 가벼워짐을 느낍니다', // bsStealth
    '몸이 공중에 뜨는 기분입니다', // bsWaterWalking
    '감각이 예민해지는 느낌이 듭니다', // bsSearching,
    '낯설은 감각이 느껴집니다', // bsTelepathy
    '잠시 감각이 없어졌습니다', // bsStuning
    '왠지 졸립습니다', // bsSleeping
    '순간 많은 잡념이 떠오릅니다', // bsConfusing
    '순간 몸이 굳어짐을 느낍니다', // bsStoning
    '싸늘한 기운이 감돕니다', // bsFreezing
    '순간적으로 주위가 캄캄해졌습니다', // bsBlinding
    '활기찬 기운이 돕니다', // bsTeleporting
    '목이 갑갑합니다', // bsSilencing
    '어쩐지 불길한 예감이 듭니다', // bsHostiled
    '몸이 가라앉는 기분이 듭니다', // bsDrowning
    '순간적으로 기운이 빠집니다', // bsPoisioning
    '뜨거운 열기가 느껴집니다', // bsBurning
    '알수 없는 통증이 느껴집니다', // bsWounded
    '잡음이 들립니다' // bsNoisy
    );

  2. 착용 슬롯
    ITEM_SLOT: array [Low(TItemSlot)..High(TItemSlot)] of String = (
    '', '한손장비', '양손장비', '보조장비', '한손 또는 보조장비',
    '가슴', '머리', '손', '발', '목', '손가락', '장신구' );
  3. 방어구의 재질
    MATERIAL_TYPE: array [Low(TArmoryMaterial)..High(TArmoryMaterial)] of String = (
    '직물', '가죽', '사슬', '판금' );
  4. 아이템의 등급
    ITEM_LEVEL: array[Low(TItemLevel)..High(TItemLevel)] of String = (
    '일반', '고급', '희귀', '영웅', '전설', '유물' );
  5. 아이템의 종류
    ITEM_TYPE: array[Low(TItemType)..High(TItemType)] of String = (
    '골드',
    '무기', '갑옷', '신발', '장갑', '모자',
    '목걸이', '반지', '장신구',
    '물약', '두루마리',
    '책', '완드', '오브',
    '음식', '시체', '기계', '보석', '기타' );


캐릭터
  1. 다음의 기본 속성을 갖는다
    '이름' '레벨', '공격력', '적중률', '치명타율', '방어력', '블럭률', '회피율',
    '시야', '속도', '무게제한', '마나재생력', '체력회복력',
    '화염저항', '냉기저항', '비전저항', '자연저항', '암흑저항', '신성저항',
    '화염속성', '냉기속성', '비전속성', '자연속성', '암흑속성', '신성속성'
    '체력', '마력',
    '힘, // 공격력 무게제한
    '민첩', // 회피율 명중률 크리티컬
    '지능', // 마력
    '정신력' // 마나재생력 체력회복력
  2. 추가로 공/방/기본 특성치를 갖는다
  3. 추가로 성향,정의,호감도를 가지며 이는 최종적으로 받아들이는 캐릭터에 따라 다르게 반연된다
  4. 몹의 경우 아래의 속성을 가질 수 있다.
    '화염속성 면역', '냉기속성 면역', '비전속성 면역', '자연속성 면역', '암흑속성 면역', '신성속성 면역', '물리력 면역',
    '화염속성 흡수', '냉기속성 흡수', '비전속성 흡수', '자연속성 흡수', '암흑속성 흡수', '신성속성 흡수'


파티
  1. 랜덤 형태의 캐릭터 + 고유 캐릭터 (동료로 만들수 있도 있고 적이 될수도 있다)
  2. 인공지능에 의한 파티 플레이 (파티원의 행동은 각 캐릭터의 AI 에 따라)
  3. 동료로 만들고 유지하기 힘든 캐릭터일수록 능력을 극대화
  4. 각 캐릭터는 고유의 개성을 최대한 살린다.
  5. 각 캐릭터의 파티 합류 및 탈퇴는 플레이어의 행동 방식에 따라 각 캐릭터의 성향 기질에 따라 다른 결과 도출 하도록 한다. (약간의 의외성도 추가)
  6. 플레이어와 마찬가지로 사망하면 그걸로 끝이다. 단 적일 경우는 또 나오기도 한다 -_-;


마법/무공
  1. 마력을 사용하여 마법 또는 무공을 사용한다 (MP라고 보면 된다)
  2. 다음의 종류가 있다
    SKILL_TYPE: array [Low(TSkill)..High(TSkill)] of String = (
    '단검', '도검', '둔기',
    '창', '도끼', '사격',
    '권법', '투척',
    '화염마법', '냉기마법', '비전마법',
    '신성마법', '암흑마법', '자연마법' );



전투
  1. 기본적으로 상대방이 적대적이어야 공격을 감행하지만 성향에 따라 느닷 없이 공격하는 넘도 있다.
  2. 몬스터는 파티중 가장 적대적인 파티원을 일순위로 공격한다.
  3. 몬스터의 공격 포기 시점도 얼마나 적대적인가 + 몬스터의 성향에 따라 다르다
  4. 시야에 들어 와야만 감지 하므로 시야가 중요 하다
  5. 지형에 따른 패널티가 있다.
  6. 무기 스왑은 절반의 시간이 흐름으로 간주한다
  7. 플레이어는 파티원을 직접적으로 제어할수 없다.
자유도

  1. 자유도가 무한대라면 제작자의 고충이 무척 크므로... 가능한한 최대로 설정 하도록 하자