Files / folder structure added

This commit is contained in:
2026-05-30 18:13:54 +12:00
commit f248b6f99f
38 changed files with 1212 additions and 0 deletions
+48
View File
@@ -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.
+46
View File
@@ -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
+42
View File
@@ -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
```
+38
View File
@@ -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.
+39
View File
@@ -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
+23
View File
@@ -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.
+20
View File
@@ -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.
+23
View File
@@ -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.
+31
View File
@@ -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
+48
View File
@@ -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.