React와 Three.js를 활용하여 웹 기반으로 구현된 3D 방치형 생태계 육성 시뮬레이션 게임입니다. 이 몰입형 시뮬레이션에서 당신은 자신만의 작은 3D 테라리움을 조성하고, 다양한 생물과 식물을 추가하며 시간이 지남에 따라 생태계가 자체적으로 성장하고 변화하며 복잡한 상호작용을 펼치는 모습을 관찰할 수 있습니다.
실행 주소 : https://dev-canvas-pi.vercel.app/
- 동적 3D 환경: Three.js를 사용하여 생동감 넘치는 테라리움과 그 안의 생명체들을 아름답게 시각화합니다. 사용자는 자유롭게 시점을 조작하며 생태계의 다양한 모습을 관찰할 수 있습니다.
- 식물 시스템:
- 성장과 생존: 식물은 햇빛, 물, 토양 비옥도에 따라 성장하며, 가뭄이나 해충, 그리고 주변 다른 식물과의 경쟁(타감 작용, 빛 경쟁) 등 다양한 환경 요인의 영향을 받습니다. 각 식물은 고유한 성장 특성과 환경 저항력을 가집니다.
- 번식: 성숙한 식물은 주변에 씨앗을 퍼뜨려 새로운 세대를 이어갑니다.
- 유전적 다양성: 성장 속도, 가뭄 저항력, 색상, 타감 물질 농도 및 반경 등 다양한 유전자를 가지며, 이는 자손에게 전달될 때 돌연변이가 발생하여 예측 불가능한 다양성을 만들어냅니다.
- 수명과 자연 도태: 모든 식물은 정해진 수명이 있으며, 열악한 환경 조건에서는 일찍 죽음을 맞이할 수 있습니다.
- 초식동물 시스템:
- 에너지 관리 및 섭식: 생존과 번식에 필요한 에너지를 식물을 섭취하여 얻습니다. 식물의 상태(건강, 해충 감염 여부)에 따라 얻는 에너지 양이 달라질 수 있습니다.
- 지능적 행동 패턴: 식물을 찾아다니고, 포식자로부터 도망치며, 때로는 무리를 지어 이동합니다. 특히, 너무 뭉쳐있을 경우 포식자에게 취약해지는 것을 방지하기 위해 밀집도에 따라 흩어지려는 행동을 보입니다.
- 유전적 특화: 이동 속도, 에너지 효율, 색상, 질병 저항력, 지배력 등 다양한 유전자를 통해 환경에 적응합니다.
- 수명과 죽음: 에너지가 고갈되거나 수명이 다하면 죽음에 이릅니다.
- 포식자 시스템:
- 에너지와 사냥: 초식동물을 사냥하여 에너지를 얻습니다. 사냥 성공은 포식자의 사냥 기술, 은신 능력, 그리고 먹잇감의 상태에 따라 달라집니다.
- 정교한 사냥 행동: 초식동물을 탐지하고, 은밀하게 접근하여 추적하고, 결정적인 순간에 공격합니다. 먹이가 부족할 경우 사냥 행동이 소극적으로 변할 수 있습니다.
- 유전적 우위: 이동 속도, 에너지 효율, 사냥 기술, 은신 능력, 질병 저항력, 지배력 등 유전자를 통해 사냥꾼으로서의 능력을 강화합니다.
- 수명과 죽음: 에너지 부족 또는 노화로 인해 죽습니다.
- 물 시스템 (Water System):
- 수원 (Water Sources): 테라리움 내에 수원지가 생성되며, 각 수원지는 한정된 양의 물을 가집니다.
- 물 소비 및 보충: 식물과 동물 모두 생존을 위해 물을 소비합니다. 수원은 자연적으로 또는 강우 이벤트를 통해 보충됩니다.
- 갈증 및 행동 변화: 동물들은 목마름을 느끼면 수원을 찾아 물을 마십니다. 식물의 성장 또한 물 접근성에 큰 영향을 받습니다.
- 질병 시스템 (Disease System):
- 발병 및 확산: 무작위로 다양한 질병(식물 마름병, 초식동물 독감, 포식자 광폭화 등)이 발생할 수 있으며, 근처 개체에게 전염될 수 있습니다.
- 영향 및 저항력: 질병에 걸린 개체는 능력치가 감소하거나 행동이 변하며, 심지어 죽을 수도 있습니다. 각 개체는 유전적인 질병 저항력을 가집니다.
- 면역: 질병에서 회복된 개체는 일정 시간 동안 해당 질병에 대한 면역력을 얻습니다.
- 사회적 역학 및 영역 시스템 (Social Dynamics & Territory):
- 지배력과 알파: 동물들은 '지배력 특성'을 기반으로 그룹 내에서 서열(알파, 베타, 단독)이 정해집니다. 알파 개체는 번식 등에서 이점을 가질 수 있습니다.
- 알파 도전: 베타 또는 강력한 단독 개체는 알파 자리를 두고 기존 알파에게 도전할 수 있습니다. 이는 에너지 소모가 큰 위험한 행동입니다.
- 영역 설정 및 방어: 포식자는 자신만의 영역을 설정하고, 주기적으로 순찰하며 영역을 표시합니다. 다른 포식자가 침입하면 영역 분쟁이 발생할 수 있습니다.
- 환경 이벤트 및 사용자 개입:
- 자연 발생 이벤트: 가뭄, 풍요로운 태양, 해충 발생, 폭우 등 예측 불가능한 이벤트가 생태계에 다양한 영향을 미칩니다.
- 사용자 개입 액션: 사용자는 '폭우 내리기', '영양 공급', '햇빛 증폭', '곰팡이 창궐', '초식동물 전염병', '포식자 먹이 비효율', '포식자 경쟁 심화', '초식동물 번식 촉진', '긴급 먹이 공급', '생태계 회복 지원', '영양 대폭발' 등 다양한 액션을 통해 생태계에 직접 개입하여 위기를 극복하거나 특정 방향으로 유도할 수 있습니다.
- 영양 순환:
- 사체 분해: 죽은 생물은 시간이 지남에 따라 분해되어 사라집니다.
- 비옥한 토양: 분해된 유기물은 그 자리에 비옥한 토양을 생성하여 주변 식물의 성장을 촉진합니다. 이 순환은 생태계의 지속 가능성에 중요한 역할을 합니다.
- 시각적 경험:
- 낮/밤 주기: 시간에 따라 배경색과 조명이 자연스럽게 변화하며 현실감을 더합니다.
- 개체 상태 시각화: 해충에 감염된 식물, 병든 동물, 분해 중인 생물, 비옥화 효과를 받는 식물, 경쟁으로 억제된 식물, 물 부족에 시달리는 식물 등 다양한 상태가 시각적으로 표현됩니다.
- 강우 효과: '폭우' 이벤트 시 사실적인 비 효과가 시각적으로 나타납니다.
- 위임 모드 (Delegation Mode):
- 활성화 시, 게임 시스템이 설정된 조건(예: 물 부족, 특정 종의 개체 수 위험 수준 도달 등)에 따라 자동으로 적절한 사용자 개입 액션을 발동시켜 생태계의 균형을 유지하려고 시도합니다. 이는 진정한 방치형 플레이를 가능하게 합니다.
- 데이터 로깅 및 보고서:
- 주기적으로 생태계의 주요 지표(개체 수, 평균 특성값, 질병 감염률 등)가 기록됩니다.
- 사용자는 '생태 보고서'를 통해 이러한 역사적 데이터를 그래프로 확인하여 생태계 변화 추이를 분석할 수 있습니다.
- 오프라인 진행: 브라우저를 닫았다가 다시 열어도 경과된 시간만큼 시뮬레이션이 진행되어, 사용자가 자리를 비운 동안에도 생태계는 계속해서 발전합니다.
- 자동 저장: 게임 상태가 주기적으로 로컬 저장소에 자동 저장되어 진행 상황을 안전하게 보존합니다.
- 게임 오버 조건: 식물, 초식동물, 포식자 중 어느 한 축이라도 완전히 멸종하면 게임 오버가 되며, 생존 시간과 최종 상태가 표시됩니다.
- 프론트엔드: React (v19), TypeScript
- 3D 렌더링: Three.js (r164+)
- 상태 관리: React Hooks (useState, useEffect, useMemo, useCallback, useRef)
- 차트: Chart.js (v4.x)
- 스타일링: Tailwind CSS (CDN)
- 기타: HTML5, CSS3, JavaScript (ESModules via importmap)
- 프로젝트 파일을 다운로드합니다.
- 웹 브라우저에서
index.html파일을 엽니다. (별도의 빌드 과정이나 로컬 서버 설정 없이 실행 가능)index.html내의<script type="importmap">을 통해 React, Three.js, Chart.js 등의 주요 의존성을 CDN(esm.sh)에서 직접 로드합니다.
- 성장 기본:
PLANT_GROWTH_RATE를 기반으로 하며, 유전 특성인growthTrait에 의해 개별 성장 속도가 조절됩니다.PLANT_MAX_HEIGHT까지 자랄 수 있습니다. - 물 요구량: 성장을 위해서는 최소
PLANT_MIN_WATER_ACCESSIBILITY_FOR_GROWTH이상의 물 접근성이 필요하며, 성장 시PLANT_WATER_CONSUMPTION_FACTOR만큼 물을 소비합니다.droughtResistance특성은 가뭄 시 생존력을 높여줍니다. 식물은 초당PLANT_MAX_WATER_UPTAKE_PER_SECOND만큼 물을 흡수할 수 있습니다. - 번식 (Seeding): 성숙한 식물(
isMature,PLANT_MATURITY_HEIGHT이상)은PLANT_SEEDING_CHANCE확률로 씨앗을 퍼뜨립니다. 씨앗은 부모 주변PLANT_SEED_SPREAD_RADIUS내에 무작위로 생성되며, 자손은 부모의 유전 특성(색상 포함)을MUTATION_FACTOR및PLANT_COLOR_MUTATION_RANGE에 따른 돌연변이와 함께 물려받습니다. - 상태 시각화 및 효과:
- 해충 감염 (
isPestInfested): '해충 발생' 이벤트 시 감염되며, 성장률이 감소하고 색상이PLANT_SICKLY_COLOR로 변합니다. (PLANT_PEST_COLOR_LERP_FACTOR적용) - 비옥화 효과 (
isFertilizedByPatch): 주변 '비옥한 토양'의 영향을 받으면 성장 보너스(FERTILE_PATCH_GROWTH_BONUS)를 받고, 발광 효과(PLANT_FERTILIZED_EMISSIVE_INTENSITY,PLANT_FERTILIZED_COLOR_LERP_FACTOR)가 나타납니다. - 타감 작용 (Allelopathy):
allelopathicStrength(양수: 촉진, 음수: 억제)와allelopathicRadius특성에 따라 주변 식물의 성장에 영향을 미칩니다. (범위:MIN_ALLELOPATHIC_STRENGTH~MAX_ALLELOPATHIC_STRENGTH,MIN_ALLELOPATHIC_RADIUS~MAX_ALLELOPATHIC_RADIUS) - 빛 경쟁: 키가 큰 식물(
LIGHT_COMPETITION_HEIGHT_THRESHOLD_FACTOR초과)은 주변(PLANT_BASE_RADIUS*LIGHT_COMPETITION_SHADING_RADIUS_FACTOR반경 내)의 키 작은 식물에게 그늘을 드리워 성장을 억제합니다. 그늘의 강도는 키 차이와growthTrait에 비례(LIGHT_COMPETITION_SHADE_STRENGTH_PER_UNIT_HEIGHT_DIFF)하며, 최대MAX_COMPETITION_PENALTY까지 적용됩니다. - 경쟁 억제 상태 (
isSuppressedByCompetition): 타감 작용이나 빛 경쟁으로 성장이 현저히 저해되면 이 상태가 되며, 색상이PLANT_SUPPRESSED_TARGET_COLOR로 변합니다. (PLANT_SUPPRESSED_COLOR_LERP_FACTOR적용) - 질병 감염 (
isDiseased): 질병에 감염되면 성장 페널티를 받고,DISEASE_SICKLY_COLOR_PLANT색상으로 변합니다. - 곰팡이 창궐 감염 (
isAffectedByFungalOutbreak): '곰팡이 창궐' 이벤트 시 감염되면 성장 페널티 및 사망률이 증가하며,PLANT_FUNGAL_OUTBREAK_SICKLY_COLOR로 변합니다.
- 해충 감염 (
- 에너지:
HERBIVORE_MAX_ENERGY까지 가질 수 있으며, 생존(HERBIVORE_IDLE_ENERGY_DECAY_RATE)과 이동(HERBIVORE_MOVE_ENERGY_COST) 시 에너지를 소모합니다.energyEfficiencyTrait특성이 소모량에 영향을 줍니다. - 섭식: 에너지가 낮을 때 주변(
HERBIVORE_EAT_RANGE내) 식물을 섭취하여HERBIVORE_EAT_ENERGY_GAIN만큼 에너지를 회복합니다. 섭취된 식물은PLANT_EATEN_SIZE_REDUCTION만큼 크기가 줄어듭니다. 병들거나 약한 식물 섭취 시 에너지 획득량이 감소할 수 있습니다. - 도망 (
isFleeingFrom):HERBIVORE_DETECTION_RANGE_PREDATOR내에 포식자가 감지되면 도망칩니다. 포식자의stealth특성에 따라 감지 거리가 줄어들 수 있습니다. - 무리 짓기: 포식자가 없을 때 주변(
HERBIVORE_GROUPING_RADIUS내) 다른 초식동물과 함께 이동하려는 경향(HERBIVORE_GROUPING_STRENGTH)을 보입니다. 무리가 너무 빽빽해지면(HERBIVORE_DENSE_GROUP_THRESHOLD초과 시), 각 개체는HERBIVORE_DENSITY_AVOIDANCE_FACTOR에 따라 약간 흩어지려는 움직임을 보입니다. - 번식: 에너지가
HERBIVORE_REPRODUCTION_ENERGY_THRESHOLD이상일 때HERBIVORE_REPRODUCTION_CHANCE확률로 번식하며,HERBIVORE_OFFSPRING_ENERGY_SHARE만큼의 에너지를 자손에게 전달합니다. 알파 개체는 번식 기회가 더 높을 수 있습니다. - 이동:
HERBIVORE_MAX_SPEED와speedTrait특성에 기반한 속도로 이동합니다. - 수분 관리:
MAX_HYDRATION까지 수분을 보유하며, 활동(HYDRATION_DECAY_RATE_ACTIVE)이나 휴식(HYDRATION_DECAY_RATE_IDLE) 시 수분을 소모합니다. 갈증 상태(SEEK_WATER_HYDRATION_THRESHOLD미만)가 되면 물을 찾아 마십니다. - 질병 감염 (
isDiseased,isAffectedByHerbivoreEpidemic): 질병에 감염되면 능력치 페널티를 받고,DISEASE_SICKLY_COLOR_ANIMAL또는HERBIVORE_EPIDEMIC_SICKLY_COLOR로 변합니다. - 더미 먹이 (
isDummyForPredator): '긴급 먹이 공급' 이벤트 시 생성되는 임시 먹이로, 포식자에게 에너지를 제공합니다. (EMERGENCY_FOOD_DUMMY_DURATION_SECONDS동안 지속)
- 에너지:
PREDATOR_MAX_ENERGY까지 보유하며, 생존(PREDATOR_IDLE_ENERGY_DECAY_RATE)과 이동(PREDATOR_MOVE_ENERGY_COST) 시 에너지를 소모합니다.energyEfficiencyTrait특성이 영향을 줍니다. - 사냥 (
targetHerbivoreId): 에너지가 특정 임계값(PREDATOR_PASSIVE_HUNT_ENERGY_THRESHOLD_FACTOR*PREDATOR_MAX_ENERGY, 초식동물 수PREDATOR_PASSIVE_HUNT_HERBIVORE_THRESHOLD미만 시 더 높은 임계값 적용) 미만일 때,PREDATOR_HUNT_DETECTION_RANGE내의 초식동물을 탐지하여 추적합니다.PREDATOR_ATTACK_RANGE내에 들어오면 공격하며, 성공 시PREDATOR_HUNT_ENERGY_GAIN만큼 에너지를 얻고PREDATOR_HUNT_EXERTION_COST만큼 추가 에너지를 소모합니다.huntSkill특성이 사냥 성공률 및 추적 속도에 영향을 줍니다. - 은신 (
stealth):MIN_STEALTH_TRAIT~MAX_STEALTH_TRAIT범위의 값을 가지며, 초식동물에게 감지될 확률을 낮춥니다. - 번식: 에너지가
PREDATOR_REPRODUCTION_ENERGY_THRESHOLD이상이고, 초식동물과의 개체 수 비율이 적절할 때PREDATOR_REPRODUCTION_CHANCE확률로 번식하며,PREDATOR_OFFSPRING_ENERGY_SHARE만큼 에너지를 자손에게 전달합니다. 알파 개체는 번식 우선권을 가질 수 있습니다. - 이동:
PREDATOR_MAX_SPEED,speedTrait,huntSkill특성에 기반한 속도로 이동합니다. - 수분 관리: 초식동물과 동일한 메커니즘으로 수분을 관리합니다.
- 영역 (Territory):
- 알파 또는 단독 포식자는
PREDATOR_TERRITORY_DEFAULT_RADIUS크기의 영역을 설정하려 시도합니다. 다른 영역과 최소PREDATOR_TERRITORY_MIN_DISTANCE_FACTOR배수만큼 떨어져야 합니다. - 영역을 가진 포식자는 주기적으로(
PREDATOR_SCENT_MARK_INTERVAL_SECONDS) 순찰(PREDATOR_PATROL_RADIUS_FACTOR내)하며 영역을 유지합니다. - 다른 포식자 침입 시
TERRITORY_DEFENSE_ENGAGE_CHANCE확률로 방어하며, 분쟁 발생 시TERRITORY_DISPUTE_ENERGY_COST를 소모합니다. 방어 시TERRITORY_DEFENSE_SPEED_BOOST효과를 받습니다. - 영역 분쟁 패배 시 영역을 잃을 수 있으며, 승리 시 지배력이 상승합니다. 영역 분쟁 후에는
TERRITORY_DISPUTE_COOLDOWN_SECONDS동안 재분쟁이 불가합니다.
- 알파 또는 단독 포식자는
- 사회적 행동 (Social Behavior):
- 알파 도전: 베타 또는 강력한 단독 포식자는 알파에게 도전(
ALPHA_CHALLENGE_INITIATE_CHANCE)할 수 있으며, 이는ALPHA_CHALLENGE_RANGE_FACTOR거리 내에서 발생합니다. 도전 시ALPHA_CHallenge_ENERGY_COST를 소모합니다. - 도전 성공 여부는 지배력(
ALPHA_CHALLENGE_DOMINANCE_WEIGHT), 에너지(ALPHA_CHALLENGE_ENERGY_WEIGHT), 나이(ALPHA_CHALLENGE_AGE_FACTOR_PEAK근접도) 등을 종합하여 결정됩니다. - 알파 도전 후에는
ALPHA_CHALLENGE_COOLDOWN_SECONDS동안 재도전이 불가합니다.
- 알파 도전: 베타 또는 강력한 단독 포식자는 알파에게 도전(
- 질병 감염 (
isDiseased): 질병(예:PREDATOR_RAGE)에 감염되면 행동 패턴이 변하거나 능력치 페널티를 받고,DISEASE_SICKLY_COLOR_ANIMAL로 변합니다.
- 주기적으로(
EVENT_MIN_COOLDOWN_SECONDS간격,EVENT_CHANCE_PER_GAME_MINUTE확률) 다음 자연 이벤트 중 하나가 발생합니다:- 가뭄 (
DROUGHT):DROUGHT_DURATION_SECONDS동안 지속. 수원지 물 감소 및 충전 속도 저하, 식물 성장 저해. - 풍요로운 태양 (
BOUNTIFUL_SUN):BOUNTIFUL_SUN_DURATION_SECONDS동안 지속.BOUNTIFUL_SUN_ENERGY_INCREASE만큼 태양 에너지 증가, 식물 성장률BOUNTIFUL_SUN_GROWTH_MULTIPLIER배 증가. - 해충 발생 (
PEST_INFESTATION):PEST_INFESTATION_DURATION_SECONDS동안 지속. 식물들이PEST_INFESTATION_AFFECT_CHANCE확률로 감염. - 폭우 (
HEAVY_RAIN):HEAVY_RAIN_DURATION_SECONDS동안 지속. 수원지에RAIN_EVENT_WATER_GAIN_TO_SOURCE만큼 물 공급.
- 가뭄 (
- 사용자 또는 위임 모드를 통해 다음과 같은 특수 이벤트/액션을 발동할 수 있습니다 (각각 고유 지속 시간 및 효과,
AUTONOMOUS_*_COOLDOWN_SECONDS에 명시된 재사용 대기시간 적용):- 햇빛 증폭 (
SUNSHINE_BURST):SUNSHINE_BURST_DURATION_SECONDS동안 태양 에너지SUNSHINE_BURST_ENERGY_INCREASE증가, 식물 성장률SUNSHINE_BURST_GROWTH_MULTIPLIER배 증가. - 곰팡이 창궐 (
FUNGAL_OUTBREAK):FUNGAL_OUTBREAK_DURATION_SECONDS동안 식물들이FUNGAL_OUTBREAK_INFECTION_CHANCE확률로 감염. 감염된 식물은 성장률FUNGAL_OUTBREAK_GROWTH_PENALTY감소, 사망률FUNGAL_OUTBREAK_MORTALITY_RATE_INCREASE증가. - 초식동물 전염병 (
HERBIVORE_EPIDEMIC):HERBIVORE_EPIDEMIC_DURATION_SECONDS동안 초식동물들이HERBIVORE_EPIDEMIC_INFECTION_CHANCE확률로 감염. 에너지 소모율HERBIVORE_EPIDEMIC_ENERGY_DRAIN_MULTIPLIER배 증가, 속도HERBIVORE_EPIDEMIC_SPEED_PENALTY감소, 사망률HERBIVORE_EPIDEMIC_MORTALITY_RATE_INCREASE증가. - 포식자 먹이 비효율 (
PREY_INEFFICIENCY):PREY_INEFFICIENCY_DURATION_SECONDS동안 포식자의 사냥 시 에너지 획득량PREY_INEFFICIENCY_ENERGY_GAIN_FACTOR배 감소, 기본 에너지 소모율PREY_INEFFICIENCY_PASSIVE_DECAY_MULTIPLIER배 증가. - 포식자 경쟁 심화 (
INTENSE_PREDATOR_COMPETITION):INTENSE_PREDATOR_COMPETITION_DURATION_SECONDS동안 포식자 간 알파 도전 확률INTENSE_PREDATOR_COMPETITION_CHALLENGE_CHANCE_MULTIPLIER배, 영역 분쟁 확률INTENSE_PREDATOR_COMPETITION_DISPUTE_CHANCE_MULTIPLIER배 증가, 관련 에너지 소모INTENSE_PREDATOR_COMPETITION_ENERGY_COST_MULTIPLIER배 증가. - 초식동물 번식 촉진 (
HERBIVORE_FERTILITY_BOOST):HERBIVORE_FERTILITY_BOOST_DURATION_SECONDS동안 초식동물의 번식 확률HERBIVORE_FERTILITY_BOOST_REPRODUCTION_CHANCE_MULTIPLIER배 증가, 번식 필요 에너지 임계값HERBIVORE_FERTILITY_BOOST_ENERGY_THRESHOLD_FACTOR배 감소. - 긴급 먹이 공급 (
EMERGENCY_PREDATOR_FOOD): 즉시EMERGENCY_FOOD_DUMMY_COUNT마리의 더미 초식동물을 생성. 각 더미는EMERGENCY_FOOD_DUMMY_ENERGY_VALUE에너지를 제공하며EMERGENCY_FOOD_DUMMY_DURATION_SECONDS동안 지속. (지속형 이벤트가 아님) - 생태계 회복 지원 (
ECOSYSTEM_RESILIENCE_BOOST):ECOSYSTEM_RESILIENCE_BOOST_DURATION_SECONDS동안 식물 성장RESILIENCE_PLANT_GROWTH_BONUS_ADDITIVE추가, 식물 번식률RESILIENCE_SEEDING_MULTIPLIER배 증가, 가뭄 저항력RESILIENCE_DROUGHT_RESISTANCE_BONUS_ADDITIVE추가, 수원지 회복률RESILIENCE_WATER_RECHARGE_MULTIPLIER배 증가.RESILIENCE_FERTILE_PATCH_COUNT개의 비옥토 즉시 생성. 특정 조건 하에 동물 번식률(RESILIENCE_HERBIVORE_REPRO_MULTIPLIER_IF_LOW,RESILIENCE_PREDATOR_REPRO_MULTIPLIER_IF_LOW) 증가. - 영양 공급 (
NUTRIENT_BOOST):NUTRIENT_BOOST_PATCH_COUNT개의 비옥한 토양을 즉시 생성. - 영양 대폭발 (
NUTRIENT_BLOOM):NUTRIENT_BLOOM_PATCH_COUNT개의 비옥한 토양을 즉시 생성. '영양 공급'보다 효과가 강력함.
- 햇빛 증폭 (
- 분해 (
isDecomposing,decompositionTimer): 수명이 다하거나 에너지가 고갈된 생물은DECOMPOSITION_DURATION_SECONDS동안 분해됩니다. 시각적으로 크기가 줄고 색이CARCASS_COLOR로 변합니다. - 비옥한 토양 (
FertilePatch): 완전히 분해된 생물은 그 자리에FERTILE_PATCH_DURATION_SECONDS동안 지속되는 비옥한 토양을 생성합니다. 최대MAX_FERTILE_PATCHES개까지 생성될 수 있습니다. - 효과: 비옥한 토양은
FERTILE_PATCH_EFFECT_RADIUS내의 식물에게FERTILE_PATCH_GROWTH_BONUS를 제공합니다.
- 각 생물은 다양한 유전 특성(성장, 저항력, 속도, 효율, 사냥, 은신, 타감 물질 농도 및 반경, 질병 저항력, 지배력 등)을 가집니다.
- 번식 시, 부모의 특성은
MUTATION_FACTOR에 따라 약간 변형되어 자손에게 전달됩니다. (예:MIN_GROWTH_TRAIT~MAX_GROWTH_TRAIT,MIN_SPEED_TRAIT~MAX_SPEED_TRAIT등). 질병 저항력은DISEASE_RESISTANCE_MUTATION_FACTOR, 지배력은DOMINANCE_TRAIT_MUTATION_FACTOR의 영향을 받습니다. - 식물의 색상 또한
PLANT_COLOR_MUTATION_RANGE에 따라 변형됩니다. - 모든 유전 특성은 정의된 최소/최대값 사이로 유지됩니다 (예:
MIN_DISEASE_RESISTANCE,MAX_DISEASE_RESISTANCE).
- 수원지:
INITIAL_WATER_SOURCES_COUNT개의 수원지가 생성되며, 각 수원지는 고유한 반경(WATER_SOURCE_DEFAULT_RADIUS기반), 최대 물 저장량(WATER_SOURCE_MAX_WATER_PER_RADIUS_UNIT* 반경), 기본 재충전율(WATER_SOURCE_DEFAULT_RECHARGE_RATE_PER_SECOND)을 가집니다. - 재충전:
WATER_SOURCE_RECHARGE_INTERVAL_SECONDS마다 재충전됩니다. 가뭄 시WATER_SOURCE_RECHARGE_DROUGHT_MULTIPLIER배, 폭우 시WATER_SOURCE_RECHARGE_RAIN_MULTIPLIER배로 재충전율이 변경됩니다. - 갈증 및 섭취: 동물은 수분
SEEK_WATER_HYDRATION_THRESHOLD미만 시 물을 찾으며, 수원지 근처(DRINKING_RANGE_FROM_SOURCE_EDGE)에서DRINKING_DURATION_SECONDS동안 물을 마셔DRINKING_RECOVERY_RATE만큼 수분을 회복합니다. 마실 때 초당WATER_CONSUMED_PER_DRINK_SECOND만큼 수원지 물이 감소합니다.
- 발생:
DISEASE_SPAWN_CHANCE_PER_GAME_MINUTE확률로 새로운 질병이 발생하며, 최소DISEASE_EVENT_MIN_COOLDOWN_SECONDS의 간격을 가집니다. 최대MAX_PATIENT_ZEROS마리의 초기 감염자가 발생할 수 있습니다. - 전파: 감염된 개체는 주변(
DISEASE_SPREAD_RADIUS내)의 다른 개체에게BASE_DISEASE_SPREAD_CHANCE* (1 - 대상의diseaseResistance) 확률로 질병을 전파합니다. - 효과 및 회복: 질병 효과는
DISEASE_EFFECT_BASE_DURATION_SECONDS동안 지속되며, 각 질병 타입(DISEASE_DEFINITIONS참고)에 따라 고유한 페널티(사망률 증가, 에너지 소모 증가, 성장/속도/번식 페널티 등)를 유발합니다. 회복 시DISEASE_RECOVERY_IMMUNITY_DURATION_SECONDS동안 해당 질병에 면역됩니다.
- 목적: 사용자의 직접적인 개입 없이 생태계가 안정적으로 유지되도록 지원합니다.
- 작동 방식:
AUTONOMOUS_ACTION_CHECK_INTERVAL_SECONDS마다 생태계 상태를 점검하여, 설정된 조건과 각 액션의 재사용 대기시간(AUTONOMOUS_*_COOLDOWN_SECONDS)을 고려하여 적절한 사용자 개입 액션을 자동으로 발동합니다. - 주요 자동 액션 트리거 조건 예시:
- 폭우: 수원지 총 물량이
AUTONOMOUS_LOW_WATER_THRESHOLD_RATIO미만일 때. - 영양 공급: 식물 수가
AUTONOMOUS_LOW_PLANT_THRESHOLD미만이거나AUTONOMOUS_CRITICALLY_LOW_PLANT_THRESHOLD미만이고 비옥토 수가AUTONOMOUS_LOW_FERTILE_PATCH_THRESHOLD미만일 때. - 영양 대폭발: 식물 수가
AUTONOMOUS_MODERATE_LOW_PLANT_THRESHOLD_FOR_BLOOM미만이고 비옥토 수가 부족할 때. - 햇빛 증폭: 식물 수가
AUTONOMOUS_SUNSHINE_BURST_PLANT_COUNT_THRESHOLD미만이고 태양 에너지가AUTONOMOUS_SUNSHINE_BURST_SUN_ENERGY_THRESHOLD미만일 때. - 곰팡이 창궐: 식물 수가
AUTONOMOUS_HIGH_PLANT_THRESHOLD를 초과할 때. - 초식동물 전염병: 초식동물 수가
AUTONOMOUS_HIGH_HERBIVORE_THRESHOLD를 초과하거나, 식물 대비 초식동물 비율(AUTONOMOUS_HERBIVORE_PLANT_RATIO_THRESHOLD)이 너무 높을 때. - 포식자 먹이 비효율: 포식자 수가
AUTONOMOUS_HIGH_PREDATOR_THRESHOLD를 초과하거나, 초식동물 대비 포식자 비율(AUTONOMOUS_HIGH_PREDATOR_RATIO_THRESHOLD)이 너무 높을 때. - 포식자 경쟁 심화: 포식자 수가 매우 많고 비율도 높을 때.
- 초식동물 번식 촉진: 초식동물 수가
AUTONOMOUS_CRITICALLY_LOW_HERBIVORE_THRESHOLD미만일 때. - 긴급 먹이 공급: 포식자 수가
AUTONOMOUS_CRITICALLY_LOW_PREDATOR_THRESHOLD미만이고 먹이가 부족할 때. - 생태계 회복 지원: 식물 수가
AUTONOMOUS_CRITICAL_PLANT_THRESHOLD_FOR_RESILIENCE미만이거나, 초식동물 수가AUTONOMOUS_CRITICAL_HERBIVORE_THRESHOLD_FOR_RESILIENCE미만일 때 등 심각한 위기 상황 시.
- 폭우: 수원지 총 물량이
- 좌측 제어판:
- 위임 모드 토글: 위임 모드를 켜고 끌 수 있습니다.
- 환경 조작 버튼: '폭우 내리기', '영양 공급', '영양 대폭발', '햇빛 증폭', '긴급 먹이 공급', '생태계 회복 지원' 액션을 수동으로 발동합니다. (각 액션은 재사용 대기시간이 있을 수 있으며, 다른 주요 이벤트 발생 중에는 비활성화될 수 있습니다.)
- 생태계 조절 버튼: '곰팡이 창궐', '초식동물 전염병', '포식자 먹이 비효율', '포식자 경쟁 심화', '초식동물 번식 촉진' 액션을 수동으로 발동합니다.
- 게임 초기화 버튼: 모든 진행 상황을 초기화하고 게임을 처음부터 다시 시작합니다. (확인 창 표시)
- 우측 정보 패널:
- 테라리움 현황: 현재 식물, 초식동물, 포식자 수, 수원 총량, 태양 에너지, 비옥토 수, 게임 시간, 현재 환경 이벤트 및 남은 시간을 표시합니다.
- 선택된 개체 정보: 3D 뷰에서 개체를 클릭하면 해당 개체의 상세 정보(ID, 타입, 나이, 에너지, 수분, 행동 상태, 유전 특성, 질병 상태, 사회적 지위, 영역 정보 등)를 상세히 보여줍니다.
- 3D 뷰 및 상단:
- 3D 뷰 조작: 마우스를 사용하여 시점을 회전, 확대/축소, 이동할 수 있습니다.
- 개체 선택: 3D 뷰 내의 식물이나 동물을 클릭하여 선택하고 정보를 확인할 수 있습니다.
- 생태 보고서 버튼: 클릭 시 모달 창을 통해 시간에 따른 생태계의 주요 지표 변화를 그래프로 확인할 수 있는 '생태계 변화 보고서'를 엽니다.
- 게임 팁: 좌측 상단에 주기적으로(
TIP_ROTATION_INTERVAL_MS) 유용한 게임 팁이 표시됩니다. - 게임 오버: 특정 종의 완전 멸종 등 게임 오버 조건 충족 시, 게임 오버 화면이 나타나며 생존 시간과 최종 개체 수 변화 그래프를 보여주고, 게임 재시작 옵션을 제공합니다.
.
├── README.md # 이 문서
├── index.html # 메인 HTML 파일, 애플리케이션 컨테이너
├── index.tsx # React 애플리케이션의 진입점 (DOM 렌더링)
├── App.tsx # 메인 React 컴포넌트, 게임 상태 관리 및 UI/UX 총괄
├── metadata.json # 프로젝트 메타데이터 (Frame 컨텍스트용)
├── types.ts # TypeScript 타입 정의 (개체, 상태, 이벤트 등)
├── constants.ts # 게임 내 사용되는 모든 상수, 초기값, 설정값 정의
├── services/
│ └── storageService.ts # 로컬 저장소를 이용한 게임 상태 저장 및 로드 로직
├── game/
│ ├── EcosystemView.tsx # Three.js를 사용한 3D 렌더링 컴포넌트
│ └── engine/
│ └── simulation.ts # 핵심 시뮬레이션 로직 (개체 업데이트, 상호작용, 이벤트 처리 등)
└── components/
├── ActionButton.tsx # 공용 액션 버튼 UI 컴포넌트
├── InfoPanel.tsx # 우측 정보 표시 패널 UI 컴포넌트
├── HistoricalDataChart.tsx # 차트 생성 및 표시 컴포넌트 (Chart.js 래퍼)
├── EcosystemReportModal.tsx # 생태 보고서 모달 UI 컴포넌트
├── ConfirmationModal.tsx # 확인/취소 모달 UI 컴포넌트 (게임 초기화 등)
└── icons/ # UI에 사용되는 다양한 SVG 아이콘 컴포넌트들
├── PlantIcon.tsx
├── CreatureIcon.tsx
├── PredatorIcon.tsx
├── WaterIcon.tsx
├── DroughtIcon.tsx
├── SunIcon.tsx
├── BugIcon.tsx # 비옥토 아이콘으로도 사용
├── ChartIcon.tsx
├── ResetIcon.tsx
├── SproutIcon.tsx # 영양 공급 아이콘
├── BloomIcon.tsx # 영양 대폭발 아이콘
├── MushroomIcon.tsx # 곰팡이 창궐 아이콘
├── SickCreatureIcon.tsx # 초식동물 전염병 아이콘
├── HungryPredatorIcon.tsx # 포식자 먹이 비효율 아이콘
├── PredatorCompetitionIcon.tsx # 포식자 경쟁 심화 아이콘
├── HerbivoreFertilityIcon.tsx # 초식동물 번식 촉진 아이콘
├── EmergencyFoodIcon.tsx # 긴급 먹이 공급 아이콘
└── EcosystemResilienceBoostIcon.tsx # 생태계 회복 지원 아이콘
- 더 복잡한 유전 시스템: 우성/열성 유전자, 유전자 풀 개념 도입, 교배를 통한 특성 조합.
- 다양한 생물 종 및 식물 종 추가: 각 종마다 고유한 특성, 상호작용, 생태적 지위 부여.
- 계절 변화 및 기후 시스템: 온도, 습도 변화에 따른 생태계 영향.
- 사용자 정의 가능한 환경 설정: 테라리움 크기, 초기 자원량 등 사용자 설정 기능.
- 업적 및 퀘스트 시스템: 특정 목표 달성 시 보상 또는 새로운 기능 해금.
- 향상된 AI 및 행동 패턴: 더욱 복잡하고 현실적인 동물 행동 로직.
- 사운드 효과 및 배경 음악: 몰입감을 높이는 오디오 요소 추가.
- 튜토리얼 또는 가이드 시스템: 신규 사용자를 위한 단계별 안내.
- Terraforming 기능: 지형 높낮이 조절, 수원지 생성/제거 등 환경 직접 변경 기능.
이 README는 프로젝트의 현재 상태를 기준으로 작성되었으며, 기능이 추가되거나 변경됨에 따라 지속적으로 업데이트될 예정입니다.