Files / folder structure added
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# Architecture
|
||||
|
||||
## Main Components
|
||||
|
||||
### F4SE Plugin
|
||||
|
||||
The native plugin is responsible for:
|
||||
|
||||
- Loading into Fallout 4
|
||||
- Reading local player state
|
||||
- Sending local player data to the server
|
||||
- Receiving remote player data
|
||||
- Applying remote player updates safely
|
||||
|
||||
### External Server
|
||||
|
||||
The server is responsible for:
|
||||
|
||||
- Accepting client connections
|
||||
- Assigning player IDs
|
||||
- Receiving player state
|
||||
- Broadcasting player state
|
||||
- Tracking disconnects
|
||||
|
||||
### Creation Kit Plugin
|
||||
|
||||
The Creation Kit side is responsible for:
|
||||
|
||||
- Test cells
|
||||
- Placeholder actors
|
||||
- Optional Papyrus helper scripts
|
||||
- Debug objects
|
||||
- Controlled test environments
|
||||
|
||||
## Threading Model
|
||||
|
||||
Networking should run separately from game update logic.
|
||||
|
||||
Recommended approach:
|
||||
|
||||
```text
|
||||
Networking thread receives packets
|
||||
Networking thread stores remote player state
|
||||
Game update reads remote player state
|
||||
Game update applies actor movement
|
||||
```
|
||||
|
||||
The networking thread should avoid directly modifying Fallout 4 game objects unless the operation is known to be safe.
|
||||
@@ -0,0 +1,46 @@
|
||||
# Creation Kit Notes
|
||||
|
||||
The Creation Kit side of Fallout 4 Together should provide controlled test content for multiplayer development.
|
||||
|
||||
## First Creation Kit Goals
|
||||
|
||||
- Create a small test cell
|
||||
- Add player start markers
|
||||
- Add remote player placeholder markers
|
||||
- Add simple lighting
|
||||
- Avoid quests, doors, hostile NPCs, and complex world state
|
||||
|
||||
## Suggested Test Cell
|
||||
|
||||
```text
|
||||
F4TTestCell01
|
||||
```
|
||||
|
||||
## Suggested Test Plugin
|
||||
|
||||
```text
|
||||
Fallout4Together_Test.esp
|
||||
```
|
||||
|
||||
## Test Cell Requirements
|
||||
|
||||
The first test cell should include:
|
||||
|
||||
- Flat ground
|
||||
- Clear lighting
|
||||
- No enemies
|
||||
- No quest dependencies
|
||||
- No doors to other cells
|
||||
- A few visual markers to judge movement
|
||||
- Enough space for movement syncing tests
|
||||
|
||||
## Papyrus Scripts
|
||||
|
||||
Papyrus may eventually be useful for helper systems, but networking should not be handled in Papyrus.
|
||||
|
||||
Possible Papyrus uses:
|
||||
|
||||
- Debug startup quest
|
||||
- Spawning helper actors
|
||||
- Showing messages
|
||||
- Triggering test events
|
||||
@@ -0,0 +1,42 @@
|
||||
# F4SE Notes
|
||||
|
||||
F4SE is expected to be the main entry point for the native plugin side of Fallout 4 Together.
|
||||
|
||||
## Plugin Goals
|
||||
|
||||
The first plugin goals are:
|
||||
|
||||
- Confirm the plugin loads
|
||||
- Create a log file
|
||||
- Detect the game version
|
||||
- Read the local player reference
|
||||
- Read the local player position
|
||||
- Send basic data to a local server
|
||||
|
||||
## Expected Plugin Output
|
||||
|
||||
Eventually, the compiled plugin should output something like:
|
||||
|
||||
```text
|
||||
Data/F4SE/Plugins/Fallout4Together.dll
|
||||
```
|
||||
|
||||
## Important Notes
|
||||
|
||||
Do not commit F4SE binaries to this repository.
|
||||
|
||||
Do not commit Fallout 4 executable files or game assets.
|
||||
|
||||
Use a CommonLibF4 template to reduce setup friction.
|
||||
|
||||
## Plugin Safety
|
||||
|
||||
Avoid modifying Fallout 4 game objects directly from a networking thread.
|
||||
|
||||
Recommended flow:
|
||||
|
||||
```text
|
||||
Networking thread receives packets
|
||||
Networking thread stores packet data
|
||||
Main/game update applies safe changes
|
||||
```
|
||||
@@ -0,0 +1,38 @@
|
||||
# Limitations
|
||||
|
||||
Fallout 4 was designed as a single-player game. Fallout 4 Together is therefore expected to have serious technical limitations, especially during early development.
|
||||
|
||||
## Early Prototype Limitations
|
||||
|
||||
The first prototype will likely require:
|
||||
|
||||
- All players to remain in the same test cell
|
||||
- A clean Fallout 4 test profile
|
||||
- A dedicated test save
|
||||
- No large gameplay mods
|
||||
- No quest synchronization
|
||||
- No settlement synchronization
|
||||
- No VATS synchronization
|
||||
- No dialogue synchronization
|
||||
|
||||
## Systems Not Supported Early
|
||||
|
||||
### Quests
|
||||
|
||||
Quest state is complex and deeply tied to the single-player game world. Quest synchronization is not part of the first prototype.
|
||||
|
||||
### Settlements
|
||||
|
||||
Settlements involve workshop data, placed objects, NPC ownership, resources, attacks, and persistent state. Settlement sync is not part of the first prototype.
|
||||
|
||||
### VATS
|
||||
|
||||
VATS depends on single-player time behavior and targeting logic. VATS should be disabled or ignored during early tests.
|
||||
|
||||
### Saves
|
||||
|
||||
Multiplayer state may desync or damage saves if handled incorrectly. Use a dedicated test save only.
|
||||
|
||||
### Mod Compatibility
|
||||
|
||||
The first prototype should be tested with a clean setup. Compatibility with large modlists is not an early goal.
|
||||
@@ -0,0 +1,39 @@
|
||||
# Project Overview
|
||||
|
||||
Fallout 4 Together is a prototype multiplayer framework experiment for Fallout 4.
|
||||
|
||||
The first target is not full co-op. The first target is a controlled test where two clients can connect to a local server and see each other as synced actors in a custom test cell.
|
||||
|
||||
## Core Idea
|
||||
|
||||
Fallout 4 remains the client application. A native F4SE plugin reads local player state and communicates with an external server.
|
||||
|
||||
The server tracks connected players and broadcasts relevant state to other clients.
|
||||
|
||||
A Creation Kit plugin provides test cells, placeholder actors, scripts, and controlled test content.
|
||||
|
||||
## Basic Flow
|
||||
|
||||
```text
|
||||
Fallout 4 Client A
|
||||
|
|
||||
| local player transform
|
||||
v
|
||||
External Server
|
||||
|
|
||||
| remote player transform
|
||||
v
|
||||
Fallout 4 Client B
|
||||
```
|
||||
|
||||
## Early Limitations
|
||||
|
||||
The first prototype should assume:
|
||||
|
||||
- All players are in the same cell
|
||||
- No quest synchronization
|
||||
- No settlement synchronization
|
||||
- No VATS
|
||||
- No dialogue sync
|
||||
- No full inventory sync
|
||||
- No support for large modlists
|
||||
@@ -0,0 +1,23 @@
|
||||
# Protocol Overview
|
||||
|
||||
The Fallout 4 Together protocol defines the messages sent between Fallout 4 clients and the external server.
|
||||
|
||||
Early versions should stay simple and easy to debug.
|
||||
|
||||
## Early Design
|
||||
|
||||
The first version can use human-readable packets during testing.
|
||||
|
||||
Long-term versions may move to a binary protocol if performance becomes a problem.
|
||||
|
||||
## First Required Messages
|
||||
|
||||
- `welcome`
|
||||
- `transform`
|
||||
- `disconnect`
|
||||
- `ping`
|
||||
- `pong`
|
||||
|
||||
## Main Rule
|
||||
|
||||
The protocol should be testable outside Fallout 4 before it is used inside the F4SE plugin.
|
||||
@@ -0,0 +1,20 @@
|
||||
# Bethesda Engine Notes
|
||||
|
||||
This file is for general research notes about Fallout 4 and the Creation Engine.
|
||||
|
||||
## Topics to Research
|
||||
|
||||
- Actor references
|
||||
- Player reference behavior
|
||||
- Cell loading
|
||||
- Worldspace loading
|
||||
- AI packages
|
||||
- Animation state
|
||||
- Actor values
|
||||
- Save game persistence
|
||||
- Papyrus limitations
|
||||
- F4SE plugin safety
|
||||
|
||||
## Notes
|
||||
|
||||
Add technical findings here as research develops.
|
||||
@@ -0,0 +1,23 @@
|
||||
# Existing Projects Research
|
||||
|
||||
This file is for notes on existing Bethesda multiplayer projects and experiments.
|
||||
|
||||
## Research Targets
|
||||
|
||||
- Skyrim Together
|
||||
- NV:MP
|
||||
- VaultMP
|
||||
- F4MP attempts
|
||||
- Other Fallout 4 multiplayer experiments
|
||||
|
||||
## Research Questions
|
||||
|
||||
- How did they handle remote player actors?
|
||||
- How did they handle cell changes?
|
||||
- How did they handle quest state?
|
||||
- What systems were impossible or unstable?
|
||||
- What parts are useful references for Fallout 4 Together?
|
||||
|
||||
## Notes
|
||||
|
||||
Add findings here as research develops.
|
||||
@@ -0,0 +1,31 @@
|
||||
# Multiplayer Sync Notes
|
||||
|
||||
This file is for notes on synchronizing multiplayer state.
|
||||
|
||||
## Initial Sync Targets
|
||||
|
||||
- Position
|
||||
- Rotation
|
||||
- Cell ID
|
||||
- Worldspace ID
|
||||
- Basic animation state
|
||||
- Disconnect cleanup
|
||||
|
||||
## Later Sync Targets
|
||||
|
||||
- Weapon state
|
||||
- Health
|
||||
- Basic combat events
|
||||
- Cell transitions
|
||||
- Limited world interactions
|
||||
|
||||
## Known Hard Problems
|
||||
|
||||
- Quest state
|
||||
- Settlement state
|
||||
- Dialogue state
|
||||
- Save files
|
||||
- Physics objects
|
||||
- NPC ownership
|
||||
- Time dilation
|
||||
- VATS
|
||||
@@ -0,0 +1,48 @@
|
||||
# Development Setup
|
||||
|
||||
## Required Tools
|
||||
|
||||
- Fallout 4 on PC
|
||||
- Fallout 4 Script Extender, F4SE
|
||||
- Fallout 4 Creation Kit
|
||||
- Visual Studio 2022 or newer
|
||||
- Git
|
||||
- CMake or another build system required by the selected plugin template
|
||||
- Mod Organizer 2 or Vortex
|
||||
|
||||
## Recommended Fallout 4 Setup
|
||||
|
||||
Use a clean test profile.
|
||||
|
||||
Recommended:
|
||||
|
||||
```text
|
||||
Fallout 4
|
||||
F4SE
|
||||
Fallout 4 Together test plugin
|
||||
No other gameplay mods
|
||||
Dedicated test save
|
||||
```
|
||||
|
||||
Avoid testing with a full modlist while developing the core systems.
|
||||
|
||||
## Version Tracking
|
||||
|
||||
Record the exact versions used:
|
||||
|
||||
```text
|
||||
Fallout 4 version:
|
||||
F4SE version:
|
||||
Creation Kit version:
|
||||
CommonLibF4 template:
|
||||
Windows version:
|
||||
Compiler version:
|
||||
```
|
||||
|
||||
## Folder Notes
|
||||
|
||||
Do not copy Fallout 4 game files into this repository.
|
||||
|
||||
Do not copy F4SE binaries into this repository.
|
||||
|
||||
Use the `plugin/external/README.md` file to document where external dependencies should be installed.
|
||||
Reference in New Issue
Block a user