Initial Agrarian Unreal project
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
[*.{cpp,h}]
|
||||
|
||||
# Naming convention rules (note: currently need to be ordered from more to less specific)
|
||||
|
||||
cpp_naming_rule.aactor_prefixed.symbols = aactor_class
|
||||
cpp_naming_rule.aactor_prefixed.style = aactor_style
|
||||
|
||||
cpp_naming_rule.swidget_prefixed.symbols = swidget_class
|
||||
cpp_naming_rule.swidget_prefixed.style = swidget_style
|
||||
|
||||
cpp_naming_rule.uobject_prefixed.symbols = uobject_class
|
||||
cpp_naming_rule.uobject_prefixed.style = uobject_style
|
||||
|
||||
cpp_naming_rule.booleans_prefixed.symbols = boolean_vars
|
||||
cpp_naming_rule.booleans_prefixed.style = boolean_style
|
||||
|
||||
cpp_naming_rule.structs_prefixed.symbols = structs
|
||||
cpp_naming_rule.structs_prefixed.style = unreal_engine_structs
|
||||
|
||||
cpp_naming_rule.enums_prefixed.symbols = enums
|
||||
cpp_naming_rule.enums_prefixed.style = unreal_engine_enums
|
||||
|
||||
cpp_naming_rule.templates_prefixed.symbols = templates
|
||||
cpp_naming_rule.templates_prefixed.style = unreal_engine_templates
|
||||
|
||||
cpp_naming_rule.general_names.symbols = all_symbols
|
||||
cpp_naming_rule.general_names.style = unreal_engine_default
|
||||
|
||||
# Naming convention symbols
|
||||
|
||||
cpp_naming_symbols.aactor_class.applicable_kinds = class
|
||||
cpp_naming_symbols.aactor_class.applicable_type = AActor
|
||||
|
||||
cpp_naming_symbols.swidget_class.applicable_kinds = class
|
||||
cpp_naming_symbols.swidget_class.applicable_type = SWidget
|
||||
|
||||
cpp_naming_symbols.uobject_class.applicable_kinds = class
|
||||
cpp_naming_symbols.uobject_class.applicable_type = UObject
|
||||
|
||||
cpp_naming_symbols.boolean_vars.applicable_kinds = local,parameter,field
|
||||
cpp_naming_symbols.boolean_vars.applicable_type = bool
|
||||
|
||||
cpp_naming_symbols.enums.applicable_kinds = enum
|
||||
|
||||
cpp_naming_symbols.templates.applicable_kinds = template_class
|
||||
|
||||
cpp_naming_symbols.structs.applicable_kinds = struct
|
||||
|
||||
cpp_naming_symbols.all_symbols.applicable_kinds = *
|
||||
|
||||
# Naming convention styles
|
||||
|
||||
cpp_naming_style.unreal_engine_default.capitalization = pascal_case
|
||||
cpp_naming_style.unreal_engine_default.required_prefix =
|
||||
cpp_naming_style.unreal_engine_default.required_suffix =
|
||||
cpp_naming_style.unreal_engine_default.word_separator =
|
||||
|
||||
cpp_naming_style.unreal_engine_enums.capitalization = pascal_case
|
||||
cpp_naming_style.unreal_engine_enums.required_prefix = E
|
||||
cpp_naming_style.unreal_engine_enums.required_suffix =
|
||||
cpp_naming_style.unreal_engine_enums.word_separator =
|
||||
|
||||
cpp_naming_style.unreal_engine_templates.capitalization = pascal_case
|
||||
cpp_naming_style.unreal_engine_templates.required_prefix = T
|
||||
cpp_naming_style.unreal_engine_templates.required_suffix =
|
||||
cpp_naming_style.unreal_engine_templates.word_separator =
|
||||
|
||||
cpp_naming_style.unreal_engine_structs.capitalization = pascal_case
|
||||
cpp_naming_style.unreal_engine_structs.required_prefix = F
|
||||
cpp_naming_style.unreal_engine_structs.required_suffix =
|
||||
cpp_naming_style.unreal_engine_structs.word_separator =
|
||||
|
||||
cpp_naming_style.uobject_style.capitalization = pascal_case
|
||||
cpp_naming_style.uobject_style.required_prefix = U
|
||||
cpp_naming_style.uobject_style.required_suffix =
|
||||
cpp_naming_style.uobject_style.word_separator =
|
||||
|
||||
cpp_naming_style.aactor_style.capitalization = pascal_case
|
||||
cpp_naming_style.aactor_style.required_prefix = A
|
||||
cpp_naming_style.aactor_style.required_suffix =
|
||||
cpp_naming_style.aactor_style.word_separator =
|
||||
|
||||
cpp_naming_style.swidget_style.capitalization = pascal_case
|
||||
cpp_naming_style.swidget_style.required_prefix = S
|
||||
cpp_naming_style.swidget_style.required_suffix =
|
||||
cpp_naming_style.swidget_style.word_separator =
|
||||
|
||||
cpp_naming_style.boolean_style.capitalization = pascal_case
|
||||
cpp_naming_style.boolean_style.required_prefix = b
|
||||
cpp_naming_style.boolean_style.required_suffix =
|
||||
cpp_naming_style.boolean_style.word_separator =
|
||||
@@ -0,0 +1,22 @@
|
||||
# Unreal binary assets should use Git LFS when this project is put in Git.
|
||||
*.uasset filter=lfs diff=lfs merge=lfs -text
|
||||
*.umap filter=lfs diff=lfs merge=lfs -text
|
||||
*.ubulk filter=lfs diff=lfs merge=lfs -text
|
||||
*.uexp filter=lfs diff=lfs merge=lfs -text
|
||||
*.wav filter=lfs diff=lfs merge=lfs -text
|
||||
*.mp3 filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.jpg filter=lfs diff=lfs merge=lfs -text
|
||||
*.jpeg filter=lfs diff=lfs merge=lfs -text
|
||||
*.tga filter=lfs diff=lfs merge=lfs -text
|
||||
*.fbx filter=lfs diff=lfs merge=lfs -text
|
||||
*.blend filter=lfs diff=lfs merge=lfs -text
|
||||
*.psd filter=lfs diff=lfs merge=lfs -text
|
||||
|
||||
# Text files
|
||||
*.cpp text eol=lf
|
||||
*.h text eol=lf
|
||||
*.cs text eol=lf
|
||||
*.ini text eol=lf
|
||||
*.uproject text eol=lf
|
||||
*.md text eol=lf
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
# Unreal generated folders
|
||||
Binaries/
|
||||
DerivedDataCache/
|
||||
Intermediate/
|
||||
Saved/
|
||||
.vs/
|
||||
.vscode/
|
||||
|
||||
# Build outputs
|
||||
Build/
|
||||
*.sln
|
||||
*.sln.DotSettings.user
|
||||
*.VC.db
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# Logs and local artifacts
|
||||
*.log
|
||||
*.tmp
|
||||
*.cache
|
||||
|
||||
# OS files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
Desktop.ini
|
||||
|
||||
# Keep source, config, content, docs, and project files tracked.
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"components": [
|
||||
"Component.Unreal.Debugger",
|
||||
"Component.Unreal.Ide",
|
||||
"Microsoft.Net.Component.4.6.2.TargetingPack",
|
||||
"Microsoft.VisualStudio.Component.VC.14.38.17.8.ATL",
|
||||
"Microsoft.VisualStudio.Component.VC.14.38.17.8.x86.x64",
|
||||
"Microsoft.VisualStudio.Component.VC.14.44.17.14.ATL",
|
||||
"Microsoft.VisualStudio.Component.VC.14.44.17.14.x86.x64",
|
||||
"Microsoft.VisualStudio.Component.VC.Llvm.Clang",
|
||||
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
|
||||
"Microsoft.VisualStudio.Component.Windows11SDK.22621",
|
||||
"Microsoft.VisualStudio.Workload.CoreEditor",
|
||||
"Microsoft.VisualStudio.Workload.ManagedDesktop",
|
||||
"Microsoft.VisualStudio.Workload.NativeDesktop",
|
||||
"Microsoft.VisualStudio.Workload.NativeGame"
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,44 @@
|
||||
# Agrarian Foundation Status
|
||||
|
||||
## Completed Foundation Work
|
||||
|
||||
- [x] Master vision preserved in project root.
|
||||
- [x] Comprehensive development roadmap preserved in project root.
|
||||
- [x] Phase 1 C++ survival foundation started.
|
||||
- [x] Replicated survival component added.
|
||||
- [x] Replicated inventory component added.
|
||||
- [x] Interaction interface added.
|
||||
- [x] Resource node actor added.
|
||||
- [x] Campfire actor added.
|
||||
- [x] Primitive shelter actor added.
|
||||
- [x] World time/weather game state added.
|
||||
- [x] Primitive crafting component added.
|
||||
- [x] Save game data structures added.
|
||||
- [x] Persistence subsystem scaffold added.
|
||||
- [x] Character now owns survival, inventory, and crafting components.
|
||||
- [x] Character has server-authoritative interaction path.
|
||||
- [x] Git ignore and Git LFS attribute prep files added.
|
||||
|
||||
## Next Unreal Editor Tasks
|
||||
|
||||
- [ ] Compile project from Visual Studio.
|
||||
- [ ] Fix any C++ compiler/UHT errors.
|
||||
- [ ] Create `IA_Interact` input action.
|
||||
- [ ] Bind `IA_Interact` to `E` and a gamepad button.
|
||||
- [ ] Assign `IA_Interact` to the character Blueprint's `InteractAction`.
|
||||
- [ ] Create Blueprint child `BP_AGR_Resource_Wood` from `AgrarianResourceNode`.
|
||||
- [ ] Create Blueprint child `BP_AGR_Campfire` from `AgrarianCampfire`.
|
||||
- [ ] Create Blueprint child `BP_AGR_PrimitiveShelter` from `AgrarianShelterActor`.
|
||||
- [ ] Assign placeholder meshes to MVP actors.
|
||||
- [ ] Place resource nodes and campfire in the test map.
|
||||
- [ ] Add simple HUD/debug display for survival and inventory.
|
||||
- [ ] Test gather -> inventory -> campfire loop.
|
||||
|
||||
## Next C++ Foundation Tasks
|
||||
|
||||
- [ ] Add building placement component.
|
||||
- [ ] Add simple crafting recipe defaults or data asset pipeline.
|
||||
- [ ] Add item definition data asset class.
|
||||
- [ ] Add save/load capture for placed actors.
|
||||
- [ ] Add admin/dev console commands.
|
||||
- [ ] Add wildlife base actor.
|
||||
@@ -0,0 +1,620 @@
|
||||
# AGRARIAN
|
||||
|
||||
## Master Vision, Narrative, Roadmap & Business Strategy
|
||||
|
||||
## What Is Agrarian?
|
||||
|
||||
Agrarian is a persistent generational civilization simulator set on a continuously evolving Earth-scale world where players rebuild humanity through survival, stewardship, family, labor, trade, governance, and technological progress.
|
||||
|
||||
Players begin with almost nothing.
|
||||
|
||||
A fire. A crude shelter. A winter approaching. A world larger than they understand.
|
||||
|
||||
From those beginnings, generations of players slowly shape civilization itself.
|
||||
|
||||
Some will remain wanderers. Some will build homesteads. Some will create villages. Some will found nations. Some will destroy them.
|
||||
|
||||
Over centuries of in-game history, the world evolves continuously through player actions, environmental systems, economics, migration, politics, war, agriculture, infrastructure, and inherited knowledge.
|
||||
|
||||
Nothing wipes. Nothing resets. History persists.
|
||||
|
||||
Agrarian is not designed as a traditional MMO.
|
||||
|
||||
It is designed as a living civilization project.
|
||||
|
||||
## The Core Philosophy
|
||||
|
||||
Agrarian is built around several foundational ideas:
|
||||
|
||||
### Civilization Is Built, Not Spawned
|
||||
|
||||
Every road, field, bridge, town, and city exists because someone survived long enough to build it.
|
||||
|
||||
### Legacy Matters More Than Levels
|
||||
|
||||
Characters die. Civilizations endure.
|
||||
|
||||
### The Frontier Always Exists Somewhere
|
||||
|
||||
New players are never locked out of meaningful beginnings because the world constantly evolves through migration, collapse, expansion, and rediscovery.
|
||||
|
||||
### Knowledge Is Humanity's True Progression System
|
||||
|
||||
Survival knowledge, logistics, farming, engineering, diplomacy, leadership, and teaching matter more than simple stat inflation.
|
||||
|
||||
### History Is Never Erased
|
||||
|
||||
The world remembers what players build.
|
||||
|
||||
Ruins remain. Empires leave scars. Ancient roads still connect cities generations later.
|
||||
|
||||
### The World Is The Expansion
|
||||
|
||||
There are no wipes, no sequels, and no fragmented expansion packs. Development continuously expands and evolves the same persistent world.
|
||||
|
||||
## The Emotional Core
|
||||
|
||||
Agrarian is ultimately about one question:
|
||||
|
||||
> What survives after you are gone?
|
||||
|
||||
The emotional center of the game is not power fantasy.
|
||||
|
||||
It is:
|
||||
|
||||
- stewardship
|
||||
- mortality
|
||||
- inheritance
|
||||
- civilization
|
||||
- continuity
|
||||
- humanity's relationship with land, labor, and time
|
||||
|
||||
## World Narrative
|
||||
|
||||
Human civilization once reached extraordinary heights before collapse fractured the world into isolated survivors and scattered communities.
|
||||
|
||||
The old world was not entirely destroyed. Its remnants still exist:
|
||||
|
||||
- crumbling infrastructure
|
||||
- abandoned machinery
|
||||
- forgotten knowledge
|
||||
- overgrown ruins
|
||||
- fragmented records
|
||||
- distant myths
|
||||
|
||||
Most players begin knowing almost nothing about the world beyond survival.
|
||||
|
||||
For many generations, humanity's focus is simple:
|
||||
|
||||
- survive winter
|
||||
- cultivate food
|
||||
- protect family
|
||||
- establish shelter
|
||||
- preserve knowledge
|
||||
|
||||
Only much later do larger questions begin to emerge:
|
||||
|
||||
- What came before?
|
||||
- How large is the world?
|
||||
- What exists beyond the horizon?
|
||||
- What lies across oceans?
|
||||
- What are the lights in the sky?
|
||||
|
||||
In the earliest eras of Agrarian, space is not a destination.
|
||||
|
||||
It is mythology.
|
||||
|
||||
A child standing in a field at night may look upward and wonder what exists beyond Earth, but the reality of reaching it feels impossibly distant.
|
||||
|
||||
That distance matters.
|
||||
|
||||
Humanity must first relearn how to survive before it can dream of reaching the stars again.
|
||||
|
||||
## Long-Term Civilization Arc
|
||||
|
||||
The world evolves through eras shaped entirely by player activity.
|
||||
|
||||
### Survival Era
|
||||
|
||||
Small groups struggle to survive harsh environments.
|
||||
|
||||
### Agrarian Era
|
||||
|
||||
Farming, domestication, trade, and settlements emerge.
|
||||
|
||||
### Civic Era
|
||||
|
||||
Governments, economies, law, infrastructure, and organized societies develop.
|
||||
|
||||
### Industrial Era
|
||||
|
||||
Mechanization, large-scale production, transportation, and global trade reshape civilization.
|
||||
|
||||
### Automation Era
|
||||
|
||||
Advanced infrastructure, robotics, AI-assisted labor, and highly complex economies emerge.
|
||||
|
||||
### Orbital Era
|
||||
|
||||
Only after centuries of development do the first serious attempts to reach beyond Earth become possible.
|
||||
|
||||
Even then:
|
||||
|
||||
- space travel is dangerous
|
||||
- expensive
|
||||
- rare
|
||||
- difficult to maintain
|
||||
- politically significant
|
||||
|
||||
The stars remain a distant frontier for a very long time.
|
||||
|
||||
## Space Expansion Philosophy
|
||||
|
||||
Space is not an expansion pack.
|
||||
|
||||
It is the next frontier of human civilization.
|
||||
|
||||
The first players who eventually leave Earth should feel like:
|
||||
|
||||
- early explorers
|
||||
- settlers
|
||||
- navigators
|
||||
- astronauts
|
||||
- pioneers crossing into the unknown
|
||||
|
||||
Interplanetary travel should require:
|
||||
|
||||
- massive infrastructure
|
||||
- industrial capability
|
||||
- advanced physics
|
||||
- fuel logistics
|
||||
- navigation
|
||||
- ship maintenance
|
||||
- life support
|
||||
- coordinated civilizations
|
||||
|
||||
Earth always remains emotionally central.
|
||||
|
||||
Players may travel beyond Earth eventually, but:
|
||||
|
||||
- ancestral homes remain
|
||||
- old civilizations remain
|
||||
- inherited land remains
|
||||
- history remains
|
||||
|
||||
The story of humanity never abandons Earth. It expands outward from it.
|
||||
|
||||
## Gameplay Structure
|
||||
|
||||
### Survival
|
||||
|
||||
- gathering
|
||||
- hunting
|
||||
- shelter
|
||||
- fire
|
||||
- weather survival
|
||||
- primitive crafting
|
||||
|
||||
### Homesteading
|
||||
|
||||
- farming
|
||||
- irrigation
|
||||
- domestication
|
||||
- preservation
|
||||
- permanent structures
|
||||
- land stewardship
|
||||
|
||||
### Civilization
|
||||
|
||||
- trade
|
||||
- infrastructure
|
||||
- governance
|
||||
- law
|
||||
- migration
|
||||
- taxation
|
||||
- diplomacy
|
||||
- warfare
|
||||
|
||||
### Technological Progression
|
||||
|
||||
- engineering
|
||||
- industrialization
|
||||
- automation
|
||||
- robotics
|
||||
- advanced logistics
|
||||
|
||||
### Long-Term Exploration
|
||||
|
||||
- advanced science
|
||||
- orbital technology
|
||||
- interplanetary infrastructure
|
||||
- deep frontier expansion
|
||||
|
||||
## Character & Generational Systems
|
||||
|
||||
Every player begins as an individual human being with randomized capabilities:
|
||||
|
||||
- strength
|
||||
- endurance
|
||||
- resilience
|
||||
- intelligence
|
||||
- craftsmanship
|
||||
- charisma
|
||||
- perception
|
||||
- adaptability
|
||||
|
||||
As characters age:
|
||||
|
||||
- physical abilities decline
|
||||
- knowledge increases
|
||||
- efficiency improves
|
||||
- teaching becomes more valuable
|
||||
|
||||
When players die:
|
||||
|
||||
- descendants inherit knowledge
|
||||
- families inherit infrastructure
|
||||
- civilizations inherit history
|
||||
|
||||
If no lineage survives, the player begins again as a new individual somewhere on the frontier.
|
||||
|
||||
Death is permanent. Civilization persists.
|
||||
|
||||
## Economy
|
||||
|
||||
Agrarian Coin (AGR) functions as the world's primary currency and economic backbone.
|
||||
|
||||
The economy is entirely player-driven:
|
||||
|
||||
- labor
|
||||
- trade
|
||||
- production
|
||||
- transportation
|
||||
- land value
|
||||
- infrastructure
|
||||
- scarcity
|
||||
- specialization
|
||||
|
||||
Players may:
|
||||
|
||||
- own land
|
||||
- establish businesses
|
||||
- rent property
|
||||
- hire labor
|
||||
- collect taxes
|
||||
- build industries
|
||||
- trade internationally
|
||||
|
||||
AGR integrates directly into the game's persistent economy.
|
||||
|
||||
AGR also retains the real-world community purpose that started the project: use by homesteaders, farmers markets, agriculture, forestry, fishing, tradespeople, and local barter-minded commerce.
|
||||
|
||||
## Monetization Philosophy
|
||||
|
||||
Agrarian rejects:
|
||||
|
||||
- pay-to-win mechanics
|
||||
- battle passes
|
||||
- loot boxes
|
||||
- seasonal wipes
|
||||
- fragmented DLC ecosystems
|
||||
|
||||
The model is:
|
||||
|
||||
- one-time purchase
|
||||
- modest monthly subscription
|
||||
- continuous world evolution
|
||||
|
||||
Players support:
|
||||
|
||||
- persistent servers
|
||||
- long-term development
|
||||
- world expansion
|
||||
- infrastructure growth
|
||||
|
||||
The game grows continuously rather than resetting every few years.
|
||||
|
||||
## Development Roadmap
|
||||
|
||||
### PHASE 1 - Foundational Survival MVP
|
||||
|
||||
Goal: Prove the survival gameplay loop.
|
||||
|
||||
Team Size: 2 developers.
|
||||
|
||||
Deliverable: Small playable multiplayer prototype.
|
||||
|
||||
Features:
|
||||
|
||||
- single biome
|
||||
- weather
|
||||
- hunger/thirst
|
||||
- injury
|
||||
- primitive crafting
|
||||
- wildlife
|
||||
- gathering
|
||||
- shelter building
|
||||
- inventory
|
||||
- stat system
|
||||
- basic multiplayer
|
||||
|
||||
### PHASE 2 - Persistent Homesteading
|
||||
|
||||
Goal: Transition from temporary survival into persistent settlement.
|
||||
|
||||
Features:
|
||||
|
||||
- farming
|
||||
- domestication
|
||||
- land claiming
|
||||
- storage
|
||||
- food preservation
|
||||
- persistent structures
|
||||
- simple economy
|
||||
|
||||
Deliverable: Players can establish permanent homesteads.
|
||||
|
||||
### PHASE 3 - Social Civilization Systems
|
||||
|
||||
Goal: Create meaningful player societies.
|
||||
|
||||
Features:
|
||||
|
||||
- trade
|
||||
- reputation
|
||||
- barter
|
||||
- contracts
|
||||
- local governance
|
||||
- theft/crime systems
|
||||
- alliances
|
||||
- migration systems
|
||||
|
||||
Deliverable: Emergent player communities form organically.
|
||||
|
||||
### PHASE 4 - Generational Gameplay
|
||||
|
||||
Goal: Introduce inheritance and mortality.
|
||||
|
||||
Features:
|
||||
|
||||
- aging
|
||||
- relationships
|
||||
- children
|
||||
- lineage
|
||||
- inheritance
|
||||
- apprenticeships
|
||||
- family systems
|
||||
- permanent death
|
||||
|
||||
Deliverable: The game evolves into a true generational simulator.
|
||||
|
||||
### PHASE 5 - Governments & Civilization
|
||||
|
||||
Goal: Enable civilization-scale gameplay.
|
||||
|
||||
Features:
|
||||
|
||||
- cities
|
||||
- citizenship
|
||||
- taxation
|
||||
- diplomacy
|
||||
- military systems
|
||||
- war
|
||||
- law systems
|
||||
- territorial control
|
||||
|
||||
Deliverable: Player-created civilizations emerge.
|
||||
|
||||
### PHASE 6 - Dynamic Civilization Cycles
|
||||
|
||||
Goal: Preserve long-term world sustainability.
|
||||
|
||||
Features:
|
||||
|
||||
- soil exhaustion
|
||||
- climate variation
|
||||
- disease
|
||||
- infrastructure decay
|
||||
- resource depletion
|
||||
- societal instability
|
||||
- frontier emergence
|
||||
- migration waves
|
||||
|
||||
Deliverable: The world remains permanently dynamic for future generations of players.
|
||||
|
||||
### PHASE 7 - Earth-Scale Expansion
|
||||
|
||||
Goal: Expand toward a planetary persistent simulation.
|
||||
|
||||
Features:
|
||||
|
||||
- large-scale terrain integration
|
||||
- biome diversity
|
||||
- global logistics
|
||||
- regional climates
|
||||
- continental economies
|
||||
- massive server scaling
|
||||
|
||||
### PHASE 8 - Industrial & Automation Era
|
||||
|
||||
Goal: Advance civilization technologically.
|
||||
|
||||
Features:
|
||||
|
||||
- industrial systems
|
||||
- power generation
|
||||
- automation
|
||||
- robotics
|
||||
- advanced transportation
|
||||
- large-scale infrastructure
|
||||
|
||||
### PHASE 9 - Orbital Foundations
|
||||
|
||||
Goal: Introduce the first steps toward space.
|
||||
|
||||
Features:
|
||||
|
||||
- astronomy
|
||||
- observatories
|
||||
- advanced physics
|
||||
- launch infrastructure
|
||||
- orbital engineering
|
||||
- rare spaceflight capability
|
||||
|
||||
Deliverable: Humanity begins looking beyond Earth again.
|
||||
|
||||
### PHASE 10 - Interplanetary Frontier
|
||||
|
||||
Goal: Open the next frontier.
|
||||
|
||||
Features:
|
||||
|
||||
- interplanetary travel
|
||||
- colony logistics
|
||||
- spacecraft maintenance
|
||||
- orbital economies
|
||||
- planetary settlement systems
|
||||
|
||||
Deliverable: Civilization expands beyond Earth while remaining part of the same continuous historical world.
|
||||
|
||||
## BUSINESS ROADMAP
|
||||
|
||||
### Stage 1 - Foundation & Prototype
|
||||
|
||||
Objective: Build credibility and proof of concept.
|
||||
|
||||
Priorities:
|
||||
|
||||
- Unreal Engine prototype
|
||||
- networking foundation
|
||||
- visual identity
|
||||
- technical feasibility
|
||||
- devlogs
|
||||
- early website
|
||||
- Discord community
|
||||
|
||||
Revenue: None initially.
|
||||
|
||||
Funding: Self-funded.
|
||||
|
||||
Goal: Create a compelling playable prototype and establish public identity.
|
||||
|
||||
### Stage 2 - Early Community Building
|
||||
|
||||
Objective: Build visibility before launch.
|
||||
|
||||
Priorities:
|
||||
|
||||
- YouTube development logs
|
||||
- TikTok short-form clips
|
||||
- Reddit engagement
|
||||
- survival/simulation community outreach
|
||||
- developer transparency
|
||||
- Steam page launch
|
||||
- wishlist campaign
|
||||
|
||||
Goal Metrics:
|
||||
|
||||
- 25k-100k Steam wishlists
|
||||
- active Discord
|
||||
- core community advocates
|
||||
|
||||
### Stage 3 - Closed Alpha
|
||||
|
||||
Objective: Validate systems with real players.
|
||||
|
||||
Distribution:
|
||||
|
||||
- Direct launcher or Steam playtest
|
||||
|
||||
Priorities:
|
||||
|
||||
- server stability
|
||||
- survival gameplay
|
||||
- persistence testing
|
||||
- community moderation
|
||||
- patch cadence
|
||||
|
||||
Revenue:
|
||||
|
||||
- Optional founder packs only if necessary
|
||||
- Avoid aggressive monetization
|
||||
|
||||
### Stage 4 - Early Access Launch
|
||||
|
||||
Platforms:
|
||||
|
||||
- Primary: Valve Corporation via Steam
|
||||
- Secondary later: Epic Games
|
||||
|
||||
Avoid console launch initially.
|
||||
|
||||
Revenue Model:
|
||||
|
||||
- one-time purchase
|
||||
- optional modest subscription once persistence/server costs justify it
|
||||
|
||||
Goal: Build sustainable recurring revenue without compromising philosophy.
|
||||
|
||||
### Stage 5 - Infrastructure Expansion
|
||||
|
||||
Objective: Scale server infrastructure carefully.
|
||||
|
||||
Priorities:
|
||||
|
||||
- regional servers
|
||||
- persistence optimization
|
||||
- anti-cheat
|
||||
- world partitioning
|
||||
- account systems
|
||||
- moderation tools
|
||||
|
||||
Team Growth:
|
||||
|
||||
- networking engineer
|
||||
- backend engineer
|
||||
- technical artist
|
||||
- community manager
|
||||
|
||||
Avoid explosive scaling too early.
|
||||
|
||||
### Stage 6 - Long-Term Studio Evolution
|
||||
|
||||
Objective: Transition from indie prototype team into sustainable long-term studio.
|
||||
|
||||
Philosophy:
|
||||
|
||||
Remain focused on:
|
||||
|
||||
- continuity
|
||||
- transparency
|
||||
- player trust
|
||||
- sustainable growth
|
||||
- long-term world stewardship
|
||||
|
||||
Do not pivot into:
|
||||
|
||||
- hyper-monetization
|
||||
- rapid sequel cycles
|
||||
- trend-chasing live-service mechanics
|
||||
|
||||
The strength of Agrarian is its consistency of vision.
|
||||
|
||||
## Marketing Position
|
||||
|
||||
Agrarian should feel less like:
|
||||
|
||||
> a game releasing this year
|
||||
|
||||
and more like:
|
||||
|
||||
> the beginning of a long-term digital civilization.
|
||||
|
||||
## Core Marketing Lines
|
||||
|
||||
- The World Is The Expansion.
|
||||
- History Is Never Erased.
|
||||
- Civilization Is Player Created.
|
||||
- Legacy Matters More Than Levels.
|
||||
- Every Empire Began With Someone Surviving Their First Winter.
|
||||
- What Survives After You Are Gone?
|
||||
@@ -0,0 +1,84 @@
|
||||
# Agrarian MVP Implementation Notes
|
||||
|
||||
This first implementation creates the C++ foundation for the Phase 1 survival MVP. It is intentionally small and system-oriented: the goal is to make the first playable loop possible without creating throwaway prototype logic that will have to be replaced later.
|
||||
|
||||
## Added C++ Systems
|
||||
|
||||
- `AgrarianTypes`
|
||||
- Shared item, survival, and weather data types.
|
||||
- `AgrarianInteractable`
|
||||
- Interface for anything the player can use/gather/activate.
|
||||
- `AgrarianSurvivalComponent`
|
||||
- Replicated health, stamina, hunger, thirst, body temperature, and injury state.
|
||||
- Server-authoritative decay and survival damage.
|
||||
- Basic ambient temperature exposure from `AgrarianGameState`.
|
||||
- `AgrarianInventoryComponent`
|
||||
- Replicated inventory item stacks.
|
||||
- Server-authoritative add/remove helpers.
|
||||
- `AgrarianGameState`
|
||||
- Replicated world time, weather state, and ambient temperature.
|
||||
- `AgrarianResourceNode`
|
||||
- Interactable gatherable actor that grants inventory items and depletes.
|
||||
- `AgrarianCampfire`
|
||||
- Interactable fire actor using wood as fuel.
|
||||
- Applies warmth to nearby characters.
|
||||
- `AgrarianShelterActor`
|
||||
- Primitive replicated shelter actor with a protection volume placeholder.
|
||||
- `AgrarianGameCharacter`
|
||||
- Now owns survival and inventory components.
|
||||
- Has a server-authoritative interaction trace flow.
|
||||
- `AgrarianGameGameMode`
|
||||
- Now uses `AgrarianGameState`.
|
||||
|
||||
## What This Enables Immediately
|
||||
|
||||
With simple Blueprint children and placeholder meshes, the project can now support:
|
||||
|
||||
- A player with replicated survival stats.
|
||||
- A player inventory.
|
||||
- Gathering resource nodes into inventory.
|
||||
- Lighting/feeding a campfire with gathered wood.
|
||||
- Warmth from the campfire affecting body temperature.
|
||||
- Replicated day/night/weather state.
|
||||
- Primitive shelter placement as a world actor once a placement UI is added.
|
||||
|
||||
## Required Editor Setup
|
||||
|
||||
These C++ classes need Blueprint/content setup inside Unreal:
|
||||
|
||||
- Create or update a player Blueprint derived from `AgrarianGameCharacter`.
|
||||
- Assign the existing movement/look/jump input actions as before.
|
||||
- Create an `IA_Interact` input action.
|
||||
- Add `IA_Interact` to the active input mapping context, suggested key `E` / gamepad face button.
|
||||
- Assign `IA_Interact` to the character's `InteractAction` property.
|
||||
- Create Blueprint children:
|
||||
- `BP_AGR_Resource_Wood` from `AgrarianResourceNode`
|
||||
- `BP_AGR_Campfire` from `AgrarianCampfire`
|
||||
- `BP_AGR_PrimitiveShelter` from `AgrarianShelterActor`
|
||||
- Assign placeholder meshes to each Blueprint.
|
||||
- Place several resource nodes and at least one campfire in the test map.
|
||||
- Confirm the active GameMode derives from `AgrarianGameGameMode`.
|
||||
|
||||
## First Playable Test
|
||||
|
||||
The first playable test should verify:
|
||||
|
||||
- Start the map as one player.
|
||||
- Look at a resource node and press interact.
|
||||
- Wood appears in the player's inventory component.
|
||||
- Interact with the campfire.
|
||||
- One wood is removed and the campfire lights.
|
||||
- Standing near the lit campfire raises/maintains body temperature.
|
||||
- Hunger and thirst decay over time.
|
||||
- Server authority is respected in multiplayer.
|
||||
|
||||
## Known Limits
|
||||
|
||||
- No visual HUD has been added yet.
|
||||
- No crafting UI has been added yet.
|
||||
- No building placement flow has been added yet.
|
||||
- No save/load persistence has been added yet.
|
||||
- No wildlife has been added yet.
|
||||
- No packaged build was compiled in this environment.
|
||||
|
||||
These are the next MVP tasks, not blockers for this foundation.
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"FileVersion": 3,
|
||||
"EngineAssociation": "5.7",
|
||||
"Category": "",
|
||||
"Description": "",
|
||||
"Modules": [
|
||||
{
|
||||
"Name": "AgrarianGame",
|
||||
"Type": "Runtime",
|
||||
"LoadingPhase": "Default"
|
||||
}
|
||||
],
|
||||
"Plugins": [
|
||||
{
|
||||
"Name": "ModelingToolsEditorMode",
|
||||
"Enabled": true
|
||||
},
|
||||
{
|
||||
"Name": "StateTree",
|
||||
"Enabled": true
|
||||
},
|
||||
{
|
||||
"Name": "GameplayStateTree",
|
||||
"Enabled": true
|
||||
},
|
||||
{
|
||||
"Name": "VisualStudioTools",
|
||||
"Enabled": true,
|
||||
"SupportedTargetPlatforms": [
|
||||
"Win64"
|
||||
]
|
||||
}
|
||||
],
|
||||
"TargetPlatforms": [],
|
||||
"AdditionalRootDirectories": [],
|
||||
"AdditionalPluginDirectories": [],
|
||||
"EpicSampleNameHash": ""
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
[UnrealEd.SimpleMap]
|
||||
SimpleMapName=/Game/ThirdPersonCPP/Maps/ThirdPersonExampleMap
|
||||
|
||||
[EditoronlyBP]
|
||||
bAllowClassAndBlueprintPinMatching=true
|
||||
bReplaceBlueprintWithClass= true
|
||||
bDontLoadBlueprintOutsideEditor= true
|
||||
bBlueprintIsNotBlueprintType= true
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
[ContentBrowser]
|
||||
ContentBrowserTab1.SelectedPaths=/Game/ThirdPersonCPP
|
||||
@@ -0,0 +1,258 @@
|
||||
[/Script/EngineSettings.GameMapsSettings]
|
||||
GameDefaultMap=/Game/ThirdPerson/Lvl_ThirdPerson.Lvl_ThirdPerson
|
||||
EditorStartupMap=/Game/ThirdPerson/Lvl_ThirdPerson.Lvl_ThirdPerson
|
||||
GlobalDefaultGameMode=/Game/ThirdPerson/Blueprints/BP_ThirdPersonGameMode.BP_ThirdPersonGameMode_C
|
||||
|
||||
[/Script/Engine.RendererSettings]
|
||||
r.Mobile.ShadingPath=1
|
||||
r.Mobile.AntiAliasing=2
|
||||
r.Mobile.FloatPrecisionMode=0
|
||||
r.Mobile.AllowDitheredLODTransition=False
|
||||
r.Mobile.VirtualTextures=False
|
||||
r.DiscardUnusedQuality=False
|
||||
r.AllowOcclusionQueries=True
|
||||
r.MinScreenRadiusForLights=0.030000
|
||||
r.MinScreenRadiusForDepthPrepass=0.030000
|
||||
r.PrecomputedVisibilityWarning=False
|
||||
r.TextureStreaming=True
|
||||
Compat.UseDXT5NormalMaps=False
|
||||
r.VirtualTextures=True
|
||||
r.VirtualTexturedLightmaps=False
|
||||
r.VT.TileSize=128
|
||||
r.VT.TileBorderSize=4
|
||||
r.VT.AnisotropicFiltering=False
|
||||
r.VT.EnableAutoImport=False
|
||||
bEnableVirtualTextureOpacityMask=True
|
||||
r.MeshPaintVirtualTexture.Support=True
|
||||
r.MeshPaintVirtualTexture.TileSize=32
|
||||
r.MeshPaintVirtualTexture.TileBorderSize=2
|
||||
r.MeshPaintVirtualTexture.UseCompression=True
|
||||
r.StaticMesh.DefaultMeshPaintTextureSupport=True
|
||||
r.MeshPaintVirtualTexture.DefaultTexelsPerVertex=4
|
||||
r.MeshPaintVirtualTexture.MaxTextureSize=4096
|
||||
r.vt.rvt.EnableBaseColor=True
|
||||
r.vt.rvt.EnableBaseColorRoughness=True
|
||||
r.vt.rvt.EnableBaseColorSpecular=True
|
||||
r.vt.rvt.EnableMask4=True
|
||||
r.vt.rvt.EnableWorldHeight=True
|
||||
r.vt.rvt.EnableDisplacement=True
|
||||
r.vt.rvt.HighQualityPerPixelHeight=True
|
||||
WorkingColorSpaceChoice=sRGB
|
||||
RedChromaticityCoordinate=(X=0.640000,Y=0.330000)
|
||||
GreenChromaticityCoordinate=(X=0.300000,Y=0.600000)
|
||||
BlueChromaticityCoordinate=(X=0.150000,Y=0.060000)
|
||||
WhiteChromaticityCoordinate=(X=0.312700,Y=0.329000)
|
||||
r.LegacyLuminanceFactors=False
|
||||
r.ClearCoatNormal=False
|
||||
r.DynamicGlobalIlluminationMethod=1
|
||||
r.ReflectionMethod=1
|
||||
r.ReflectionCaptureResolution=128
|
||||
r.ReflectionEnvironmentLightmapMixBasedOnRoughness=True
|
||||
r.Lumen.HardwareRayTracing=True
|
||||
r.Lumen.HardwareRayTracing.LightingMode=0
|
||||
r.Lumen.TranslucencyReflections.FrontLayer.EnableForProject=False
|
||||
r.Lumen.TraceMeshSDFs=0
|
||||
r.Lumen.ScreenTracingSource=0
|
||||
r.Lumen.Reflections.HardwareRayTracing.Translucent.Refraction.EnableForProject=True
|
||||
r.MegaLights.EnableForProject=False
|
||||
r.RayTracing.Shadows=False
|
||||
r.Shadow.Virtual.Enable=1
|
||||
r.RayTracing=True
|
||||
r.RayTracing.RayTracingProxies.ProjectEnabled=True
|
||||
r.RayTracing.UseTextureLod=False
|
||||
r.PathTracing=True
|
||||
r.GenerateMeshDistanceFields=True
|
||||
r.DistanceFields.DefaultVoxelDensity=0.200000
|
||||
r.Nanite.ProjectEnabled=True
|
||||
r.AllowStaticLighting=False
|
||||
r.NormalMapsForStaticLighting=False
|
||||
r.ForwardShading=False
|
||||
r.VertexFoggingForOpaque=True
|
||||
r.SeparateTranslucency=True
|
||||
r.TranslucentSortPolicy=0
|
||||
TranslucentSortAxis=(X=0.000000,Y=-1.000000,Z=0.000000)
|
||||
r.LocalFogVolume.ApplyOnTranslucent=False
|
||||
xr.VRS.FoveationLevel=0
|
||||
xr.VRS.DynamicFoveation=False
|
||||
r.CustomDepth=1
|
||||
r.CustomDepthTemporalAAJitter=True
|
||||
r.PostProcessing.PropagateAlpha=False
|
||||
r.Deferred.SupportPrimitiveAlphaHoldout=False
|
||||
r.DefaultFeature.Bloom=True
|
||||
r.DefaultFeature.AmbientOcclusion=True
|
||||
r.DefaultFeature.AmbientOcclusionStaticFraction=True
|
||||
r.DefaultFeature.AutoExposure=False
|
||||
r.DefaultFeature.AutoExposure.Method=0
|
||||
r.DefaultFeature.AutoExposure.Bias=1.000000
|
||||
r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True
|
||||
r.DefaultFeature.LocalExposure.HighlightContrastScale=0.800000
|
||||
r.DefaultFeature.LocalExposure.ShadowContrastScale=0.800000
|
||||
r.DefaultFeature.MotionBlur=False
|
||||
r.DefaultFeature.LensFlare=False
|
||||
r.TemporalAA.Upsampling=True
|
||||
r.AntiAliasingMethod=0
|
||||
r.MSAACount=4
|
||||
r.DefaultFeature.LightUnits=1
|
||||
r.DefaultBackBufferPixelFormat=4
|
||||
r.ScreenPercentage.Default=100.000000
|
||||
r.ScreenPercentage.Default.Desktop.Mode=1
|
||||
r.ScreenPercentage.Default.Mobile.Mode=0
|
||||
r.ScreenPercentage.Default.VR.Mode=0
|
||||
r.ScreenPercentage.Default.PathTracer.Mode=0
|
||||
r.Shadow.UnbuiltPreviewInGame=True
|
||||
r.StencilForLODDither=False
|
||||
r.EarlyZPass=3
|
||||
r.EarlyZPassOnlyMaterialMasking=False
|
||||
r.Shadow.CSMCaching=False
|
||||
r.DBuffer=True
|
||||
r.ClearSceneMethod=1
|
||||
r.VelocityOutputPass=0
|
||||
r.Velocity.EnableVertexDeformation=2
|
||||
r.SelectiveBasePassOutputs=False
|
||||
bDefaultParticleCutouts=False
|
||||
fx.GPUSimulationTextureSizeX=1024
|
||||
fx.GPUSimulationTextureSizeY=1024
|
||||
r.AllowGlobalClipPlane=False
|
||||
r.GBufferFormat=1
|
||||
r.MorphTarget.Mode=True
|
||||
r.MorphTarget.MaxBlendWeight=5.000000
|
||||
r.SupportSkyAtmosphere=True
|
||||
r.SupportSkyAtmosphereAffectsHeightFog=True
|
||||
r.SupportExpFogMatchesVolumetricFog=False
|
||||
r.SupportLocalFogVolumes=True
|
||||
r.SupportCloudShadowOnForwardLitTranslucent=False
|
||||
r.ClusteredDeferredShading.EnableForProject=True
|
||||
r.LightFunctionAtlas.Format=0
|
||||
r.VolumetricFog.LightFunction=True
|
||||
r.Deferred.UsesLightFunctionAtlas=True
|
||||
r.SingleLayerWater.UsesLightFunctionAtlas=False
|
||||
r.Translucent.UsesLightFunctionAtlas=False
|
||||
r.Translucent.UsesIESProfiles=False
|
||||
r.Translucent.UsesRectLights=False
|
||||
r.Translucent.UsesShadowedLocalLights=False
|
||||
r.GPUCrashDebugging=False
|
||||
vr.InstancedStereo=False
|
||||
r.MobileHDR=True
|
||||
vr.MobileMultiView=False
|
||||
r.Mobile.UseHWsRGBEncoding=False
|
||||
vr.RoundRobinOcclusion=False
|
||||
r.MeshStreaming=False
|
||||
r.HeterogeneousVolumes=True
|
||||
r.HeterogeneousVolumes.Shadows=False
|
||||
r.Translucency.HeterogeneousVolumes=False
|
||||
r.WireframeCullThreshold=5.000000
|
||||
r.SupportStationarySkylight=True
|
||||
r.SupportLowQualityLightmaps=True
|
||||
r.SupportPointLightWholeSceneShadows=True
|
||||
r.Shadow.TranslucentPerObject.ProjectEnabled=False
|
||||
r.Water.SingleLayerWater.SupportCloudShadow=False
|
||||
r.Substrate=True
|
||||
r.Substrate.ProjectGBufferFormat=0
|
||||
r.Substrate.ProjectClosuresPerPixel=4
|
||||
r.Substrate.ProjectClosuresPerPixelOverride=0
|
||||
r.Substrate.BytesPerPixel=80
|
||||
r.Substrate.OpaqueMaterialRoughRefraction=False
|
||||
r.Refraction.Blur=True
|
||||
r.Substrate.Debug.AdvancedVisualizationShaders=False
|
||||
r.Substrate.EnableLayerSupport=False
|
||||
r.Material.RoughDiffuse=False
|
||||
r.Material.EnergyConservation=False
|
||||
r.Material.DefaultAutoMaterialUsage=True
|
||||
r.OIT.SortedPixels=False
|
||||
r.HairStrands.LODMode=True
|
||||
r.SkinCache.CompileShaders=True
|
||||
r.VRS.Support=True
|
||||
r.SkinCache.SkipCompilingGPUSkinVF=False
|
||||
r.SkinCache.DefaultBehavior=1
|
||||
r.SkinCache.SceneMemoryLimitInMB=128.000000
|
||||
r.Mobile.EnableStaticAndCSMShadowReceivers=True
|
||||
r.Mobile.EnableMovableLightCSMShaderCulling=True
|
||||
r.Mobile.Forward.EnableLocalLights=1
|
||||
r.Mobile.Forward.EnableClusteredReflections=False
|
||||
r.Mobile.AllowDistanceFieldShadows=True
|
||||
r.Mobile.EnableMovableSpotlightsShadow=False
|
||||
r.GPUSkin.Support16BitBoneIndex=False
|
||||
r.GPUSkin.Limit2BoneInfluences=False
|
||||
r.SupportDepthOnlyIndexBuffers=False
|
||||
r.SupportReversedIndexBuffers=False
|
||||
r.Mobile.AmbientOcclusion=False
|
||||
r.Mobile.ScreenSpaceReflections=False
|
||||
r.Mobile.DBuffer=False
|
||||
r.Mobile.PropagateAlpha=False
|
||||
r.GPUSkin.UnlimitedBoneInfluences=False
|
||||
r.GPUSkin.AlwaysUseDeformerForUnlimitedBoneInfluences=False
|
||||
r.GPUSkin.UnlimitedBoneInfluencesThreshold=8
|
||||
DefaultBoneInfluenceLimit=(Default=0,PerPlatform=())
|
||||
MaxSkinBones=(Default=65536,PerPlatform=(("Mobile", 256)))
|
||||
r.Nanite.Foliage=False
|
||||
bStreamSkeletalMeshLODs=(Default=False,PerPlatform=())
|
||||
bDiscardSkeletalMeshOptionalLODs=(Default=False,PerPlatform=())
|
||||
VisualizeCalibrationColorMaterialPath=/Engine/EngineMaterials/PPM_DefaultCalibrationColor.PPM_DefaultCalibrationColor
|
||||
VisualizeCalibrationCustomMaterialPath=None
|
||||
VisualizeCalibrationGrayscaleMaterialPath=/Engine/EngineMaterials/PPM_DefaultCalibrationGrayscale.PPM_DefaultCalibrationGrayscale
|
||||
|
||||
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
|
||||
DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
|
||||
DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
|
||||
-D3D12TargetedShaderFormats=PCD3D_SM5
|
||||
+D3D12TargetedShaderFormats=PCD3D_SM6
|
||||
-D3D11TargetedShaderFormats=PCD3D_SM5
|
||||
+D3D11TargetedShaderFormats=PCD3D_SM5
|
||||
Compiler=Default
|
||||
AudioSampleRate=48000
|
||||
AudioCallbackBufferFrameSize=1024
|
||||
AudioNumBuffersToEnqueue=1
|
||||
AudioMaxChannels=0
|
||||
AudioNumSourceWorkers=4
|
||||
SpatializationPlugin=
|
||||
SourceDataOverridePlugin=
|
||||
ReverbPlugin=
|
||||
OcclusionPlugin=
|
||||
CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0)
|
||||
CacheSizeKB=65536
|
||||
MaxChunkSizeOverrideKB=0
|
||||
bResampleForDevice=False
|
||||
MaxSampleRate=48000.000000
|
||||
HighSampleRate=32000.000000
|
||||
MedSampleRate=24000.000000
|
||||
LowSampleRate=12000.000000
|
||||
MinSampleRate=8000.000000
|
||||
CompressionQualityModifier=1.000000
|
||||
AutoStreamingThreshold=0.000000
|
||||
SoundCueCookQualityIndex=-1
|
||||
|
||||
[/Script/LinuxTargetPlatform.LinuxTargetSettings]
|
||||
-TargetedRHIs=SF_VULKAN_SM5
|
||||
+TargetedRHIs=SF_VULKAN_SM6
|
||||
|
||||
[/Script/MacTargetPlatform.MacTargetSettings]
|
||||
-TargetedRHIs=SF_METAL_SM5
|
||||
+TargetedRHIs=SF_METAL_SM6
|
||||
|
||||
[/Script/HardwareTargeting.HardwareTargetingSettings]
|
||||
TargetedHardwareClass=Desktop
|
||||
AppliedTargetedHardwareClass=Desktop
|
||||
DefaultGraphicsPerformance=Scalable
|
||||
AppliedDefaultGraphicsPerformance=Scalable
|
||||
|
||||
[/Script/Engine.Engine]
|
||||
+ActiveGameNameRedirects=(OldGameName="TP_ThirdPerson",NewGameName="/Script/AgrarianGame")
|
||||
+ActiveGameNameRedirects=(OldGameName="/Script/TP_ThirdPerson",NewGameName="/Script/AgrarianGame")
|
||||
+ActiveClassRedirects=(OldClassName="TP_ThirdPersonPlayerController",NewClassName="AgrarianGamePlayerController")
|
||||
+ActiveClassRedirects=(OldClassName="TP_ThirdPersonGameMode",NewClassName="AgrarianGameGameMode")
|
||||
+ActiveClassRedirects=(OldClassName="TP_ThirdPersonCharacter",NewClassName="AgrarianGameCharacter")
|
||||
|
||||
[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings]
|
||||
bEnablePlugin=True
|
||||
bAllowNetworkConnection=True
|
||||
SecurityToken=75E5BDE441E4F070BBFBCE9EBE7BB8D9
|
||||
bIncludeInShipping=False
|
||||
bAllowExternalStartInShipping=False
|
||||
bCompileAFSProject=False
|
||||
bUseCompression=False
|
||||
bLogFiles=False
|
||||
bReportStats=False
|
||||
ConnectionType=USBOnly
|
||||
bUseManualIPAddress=False
|
||||
ManualIPAddress=
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
[/Script/EngineSettings.GeneralProjectSettings]
|
||||
ProjectID=1C37CF214211E5FA6177D497FE103AC4
|
||||
ProjectName=Third Person Game Template
|
||||
@@ -0,0 +1,86 @@
|
||||
|
||||
|
||||
[/Script/Engine.InputSettings]
|
||||
-AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
|
||||
-AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
|
||||
-AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
|
||||
-AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
|
||||
-AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
|
||||
-AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
|
||||
-AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
|
||||
+AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
+AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
|
||||
bAltEnterTogglesFullscreen=True
|
||||
bF11TogglesFullscreen=True
|
||||
bUseMouseForTouch=False
|
||||
bEnableMouseSmoothing=True
|
||||
bEnableFOVScaling=True
|
||||
bCaptureMouseOnLaunch=True
|
||||
bEnableLegacyInputScales=True
|
||||
bEnableMotionControls=True
|
||||
bFilterInputByPlatformUser=False
|
||||
bShouldFlushPressedKeysOnViewportFocusLost=True
|
||||
bAlwaysShowTouchInterface=False
|
||||
bShowConsoleOnFourFingerTap=True
|
||||
bEnableGestureRecognizer=False
|
||||
bUseAutocorrect=False
|
||||
DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown
|
||||
DefaultViewportMouseLockMode=LockOnCapture
|
||||
FOVScale=0.011110
|
||||
DoubleClickTime=0.200000
|
||||
DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput
|
||||
DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent
|
||||
DefaultTouchInterface=None
|
||||
-ConsoleKeys=Tilde
|
||||
+ConsoleKeys=Tilde
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user