basic playback setup code
This commit is contained in:
37
Cargo.lock
generated
37
Cargo.lock
generated
@@ -1109,7 +1109,7 @@ checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
"termcolor",
|
"termcolor",
|
||||||
"unicode-width 0.2.0",
|
"unicode-width 0.1.14",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1120,7 +1120,7 @@ checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
"termcolor",
|
"termcolor",
|
||||||
"unicode-width 0.2.0",
|
"unicode-width 0.1.14",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1135,7 +1135,7 @@ version = "3.1.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34"
|
checksum = "faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-sys 0.61.2",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2028,7 +2028,7 @@ dependencies = [
|
|||||||
"libc",
|
"libc",
|
||||||
"option-ext",
|
"option-ext",
|
||||||
"redox_users",
|
"redox_users",
|
||||||
"windows-sys 0.61.2",
|
"windows-sys 0.59.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2232,7 +2232,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
|
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"windows-sys 0.61.2",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2919,7 +2919,7 @@ dependencies = [
|
|||||||
"log",
|
"log",
|
||||||
"presser",
|
"presser",
|
||||||
"thiserror 2.0.18",
|
"thiserror 2.0.18",
|
||||||
"windows 0.61.3",
|
"windows 0.58.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -3968,7 +3968,7 @@ version = "0.50.3"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
|
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-sys 0.61.2",
|
"windows-sys 0.59.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -4339,6 +4339,12 @@ dependencies = [
|
|||||||
"miniz_oxide",
|
"miniz_oxide",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pollster"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "portable-atomic"
|
name = "portable-atomic"
|
||||||
version = "1.13.1"
|
version = "1.13.1"
|
||||||
@@ -5048,7 +5054,7 @@ dependencies = [
|
|||||||
"errno",
|
"errno",
|
||||||
"libc",
|
"libc",
|
||||||
"linux-raw-sys 0.12.1",
|
"linux-raw-sys 0.12.1",
|
||||||
"windows-sys 0.61.2",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -5391,7 +5397,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
|
checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"windows-sys 0.61.2",
|
"windows-sys 0.60.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -5445,6 +5451,7 @@ name = "strafe-ai"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"burn",
|
"burn",
|
||||||
|
"pollster",
|
||||||
"strafesnet_common",
|
"strafesnet_common",
|
||||||
"strafesnet_graphics",
|
"strafesnet_graphics",
|
||||||
"strafesnet_physics",
|
"strafesnet_physics",
|
||||||
@@ -5471,9 +5478,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "strafesnet_graphics"
|
name = "strafesnet_graphics"
|
||||||
version = "0.0.9"
|
version = "0.0.10"
|
||||||
source = "sparse+https://git.itzana.me/api/packages/strafesnet/cargo/"
|
source = "sparse+https://git.itzana.me/api/packages/strafesnet/cargo/"
|
||||||
checksum = "b57ac0ecfbb48b89d53220a794f191b541ed9fa6b710e5f3ba5490bff887845a"
|
checksum = "5080cb31a6cf898daab6c960801828ce9834dba8e932dea6b02823651ea53c33"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
"ddsfile",
|
"ddsfile",
|
||||||
@@ -5508,9 +5515,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "strafesnet_roblox_bot_player"
|
name = "strafesnet_roblox_bot_player"
|
||||||
version = "0.6.0"
|
version = "0.6.1"
|
||||||
source = "sparse+https://git.itzana.me/api/packages/strafesnet/cargo/"
|
source = "sparse+https://git.itzana.me/api/packages/strafesnet/cargo/"
|
||||||
checksum = "e9051e539a1ff4e49d0a8e35a933ff49c652fea0a6d4416d2b99d4a7f51a8fed"
|
checksum = "0669779b58836ac36b0166f5a3f326ee46ce25b4d14b7fd6f75bf273e806c1bf"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"glam",
|
"glam",
|
||||||
"strafesnet_common",
|
"strafesnet_common",
|
||||||
@@ -5722,7 +5729,7 @@ dependencies = [
|
|||||||
"getrandom 0.4.2",
|
"getrandom 0.4.2",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"rustix 1.1.4",
|
"rustix 1.1.4",
|
||||||
"windows-sys 0.61.2",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -6981,7 +6988,7 @@ version = "0.1.11"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
|
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-sys 0.61.2",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
@@ -8,8 +8,9 @@ burn = { version = "0.20.1", features = ["cuda", "autodiff"] }
|
|||||||
wgpu = "29.0.0"
|
wgpu = "29.0.0"
|
||||||
|
|
||||||
strafesnet_common = { version = "0.9.0", registry = "strafesnet" }
|
strafesnet_common = { version = "0.9.0", registry = "strafesnet" }
|
||||||
strafesnet_graphics = { version = "0.0.9", registry = "strafesnet" }
|
strafesnet_graphics = { version = "0.0.10", registry = "strafesnet" }
|
||||||
strafesnet_physics = { version = "=0.0.2-surf", registry = "strafesnet" }
|
strafesnet_physics = { version = "=0.0.2-surf", registry = "strafesnet" }
|
||||||
strafesnet_roblox_bot_file = { version = "0.9.4", registry = "strafesnet" }
|
strafesnet_roblox_bot_file = { version = "0.9.4", registry = "strafesnet" }
|
||||||
strafesnet_roblox_bot_player = { version = "0.6.0", registry = "strafesnet" }
|
strafesnet_roblox_bot_player = { version = "0.6.1", registry = "strafesnet" }
|
||||||
strafesnet_snf = { version = "0.4.0", registry = "strafesnet" }
|
strafesnet_snf = { version = "0.4.0", registry = "strafesnet" }
|
||||||
|
pollster = "0.4.0"
|
||||||
|
|||||||
48
src/main.rs
48
src/main.rs
@@ -8,6 +8,10 @@ use burn::prelude::*;
|
|||||||
type InferenceBackend = burn::backend::Cuda<f32>;
|
type InferenceBackend = burn::backend::Cuda<f32>;
|
||||||
type TrainingBackend = Autodiff<InferenceBackend>;
|
type TrainingBackend = Autodiff<InferenceBackend>;
|
||||||
|
|
||||||
|
const LIMITS: wgpu::Limits = wgpu::Limits::defaults();
|
||||||
|
use strafesnet_common::session::Time as SessionTime;
|
||||||
|
use strafesnet_graphics::setup;
|
||||||
|
|
||||||
const INPUT: usize = 2;
|
const INPUT: usize = 2;
|
||||||
const HIDDEN: usize = 64;
|
const HIDDEN: usize = 64;
|
||||||
// MoveForward
|
// MoveForward
|
||||||
@@ -53,6 +57,50 @@ fn training() {
|
|||||||
// load map
|
// load map
|
||||||
// load replay
|
// load replay
|
||||||
// setup player
|
// setup player
|
||||||
|
const SIZE_X: usize = 64;
|
||||||
|
const SIZE_Y: usize = 36;
|
||||||
|
|
||||||
|
let map_file = include_bytes!("../bhop_marble_5692093612.snfm");
|
||||||
|
let bot_file = include_bytes!("../bhop_marble_7cf33a64-7120-4514-b9fa-4fe29d9523d.qbot");
|
||||||
|
|
||||||
|
// read files
|
||||||
|
let map = strafesnet_snf::read_map(std::io::Cursor::new(map_file))
|
||||||
|
.unwrap()
|
||||||
|
.into_complete_map()
|
||||||
|
.unwrap();
|
||||||
|
let timelines =
|
||||||
|
strafesnet_roblox_bot_file::v0::read_all_to_block(std::io::Cursor::new(bot_file)).unwrap();
|
||||||
|
|
||||||
|
let bot = strafesnet_roblox_bot_player::bot::CompleteBot::new(timelines).unwrap();
|
||||||
|
let mut playback_head =
|
||||||
|
strafesnet_roblox_bot_player::head::PlaybackHead::new(&bot, SessionTime::ZERO);
|
||||||
|
|
||||||
|
// setup graphics
|
||||||
|
let desc = wgpu::InstanceDescriptor::new_without_display_handle_from_env();
|
||||||
|
let instance = wgpu::Instance::new(desc);
|
||||||
|
let (device, queue) = pollster::block_on(async {
|
||||||
|
let adapter = instance
|
||||||
|
.request_adapter(&wgpu::RequestAdapterOptions {
|
||||||
|
power_preference: wgpu::PowerPreference::HighPerformance,
|
||||||
|
force_fallback_adapter: false,
|
||||||
|
compatible_surface: None,
|
||||||
|
})
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
setup::step4::request_device(&adapter, LIMITS)
|
||||||
|
.await
|
||||||
|
.unwrap()
|
||||||
|
});
|
||||||
|
|
||||||
|
const FORMAT: wgpu::TextureFormat = wgpu::TextureFormat::Rgba8UnormSrgb;
|
||||||
|
let graphics = strafesnet_roblox_bot_player::graphics::Graphics::new(
|
||||||
|
&device,
|
||||||
|
&queue,
|
||||||
|
[SIZE_X as u32, SIZE_Y as u32].into(),
|
||||||
|
FORMAT,
|
||||||
|
LIMITS,
|
||||||
|
);
|
||||||
|
|
||||||
// setup simulation
|
// setup simulation
|
||||||
// run progressively longer segments of the map, starting very close to the end of the run and working the starting time backwards until the ai can run the whole map
|
// run progressively longer segments of the map, starting very close to the end of the run and working the starting time backwards until the ai can run the whole map
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user