new repo who this
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
# Portal
|
||||
|
||||
A VR immersive media viewer. Wrap a 3D tunnel with a sphere of video tiles around you — float inside a psychedelic portalscape.
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Engine**: Godot 4.6 (Forward Plus / Mobile renderer)
|
||||
- **Language**: GDScript
|
||||
- **XR**: OpenXR (hand tracking, controllers, haptics)
|
||||
- **Physics**: Jolt Physics
|
||||
- **Video format**: Ogg (`.ogv`)
|
||||
- **Audio format**: MP3 (`.mp3`)
|
||||
- **Platforms**: Windows (D3D12), Linux, Android / Meta Quest
|
||||
|
||||
## Opening in Godot
|
||||
|
||||
```bash
|
||||
# Editor path:
|
||||
/home/kyle/Downloads/Apps/Godot_v4.6.1-stable_linux.x86_64
|
||||
|
||||
# Open the project:
|
||||
/path/to/godot4.6 --path /home/kyle/Documents/portal
|
||||
|
||||
# Or just double-click `project.godot` if your file manager knows Godot.
|
||||
```
|
||||
|
||||
Main scene: `boot.tscn`
|
||||
|
||||
## Converting Video
|
||||
|
||||
Drop a video file onto `convert.sh` to transcode it to Godot-friendly Ogg format:
|
||||
|
||||
```bash
|
||||
chmod +x convert.sh
|
||||
./convert.sh my_video.mp4
|
||||
# Produces: my_video.mp4.ogv
|
||||
|
||||
# The script uses ffmpeg with these flags:
|
||||
# -vf "scale=-1:420" → scale to 420p height, width auto
|
||||
# -q:v 2 → video quality (near-lossless, good for Godot)
|
||||
# -q:a 1 → audio quality
|
||||
# -g:v 50 → keyframe interval (50 frames)
|
||||
```
|
||||
|
||||
Drop the resulting `.ogv` file into the project, reference it from `EmissionPoint` in `portal.tscn`, and rebuild your export preset.
|
||||
|
||||
## Content Variants
|
||||
|
||||
Different builds play different videos. Each is controlled via an export preset in `export_presets.cfg`:
|
||||
|
||||
| Variant | Video Pattern |
|
||||
|---|---|
|
||||
| stoner_dad_2 | `*stoner_dad_2*.ogv` |
|
||||
| stoner_dad_3 | `*stoner_dad_3*.ogv` |
|
||||
| stoner_plastic | `*stoner_plastic*.ogv` |
|
||||
| chubs_compilation | `*chubs*.ogv` |
|
||||
| 420_special | `*420_special*.ogv` |
|
||||
| 420_special_diet | `*420_special_diet*.ogv` |
|
||||
| orc_domination | `*orc*.ogv` |
|
||||
| furry_poppers_daddy | `*poppers*.ogv` |
|
||||
| furry_poppers_stable_stud | `*poppers*.ogv` |
|
||||
| toon_goon | `*toon*.ogv` |
|
||||
| furry_goon_encouragement | `*furry_goon*.ogv` |
|
||||
| furry_big_bad_wolf | `*wolf*.ogv` |
|
||||
|
||||
To add a new variant, create a new export preset in Godot's Export dialog and set:
|
||||
- **`custom_features`**: comma-separated flags (used at runtime for conditional logic)
|
||||
- **`include_filter`**: glob for the video file to bundle (e.g. `my_video.ogv`)
|
||||
- **`export_path`**: output binary path (e.g. `bin/windows/portal_my_variant.exe`)
|
||||
|
||||
## Platforms
|
||||
|
||||
- **Windows** — 3 export presets (Desktop 64-bit, D3D12, etc.)
|
||||
- **Linux** — 4 export presets
|
||||
- **Android** — 17 Meta Quest presets (APK, arm64-v8a)
|
||||
|
||||
## Project Structure
|
||||
|
||||
Everything lives flat in the project root:
|
||||
|
||||
```
|
||||
project.godot Godot project config
|
||||
boot.tscn Entry scene (loads portal.tscn)
|
||||
portal.tscn Main scene (tunnels, emission point, prompts)
|
||||
emission_point.tscn Video sphere manager
|
||||
tile.tscn Reusable tile scene
|
||||
game_loader.gd Boot loader script (1 line)
|
||||
portal.gd Main scene controller
|
||||
emission_point.gd Video sphere + tile layout
|
||||
tile.gd Individual video tile
|
||||
cap.gdshader Blurry sphere cap shader
|
||||
cloud_1.gdshader Tunnel cloud + spiral shader
|
||||
convert.sh Video conversion utility
|
||||
```
|
||||
Reference in New Issue
Block a user