No description
common | ||
executor | ||
runtime | ||
runtime-interface | ||
runtime-interface-macro | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
README.md | ||
rustfmt.toml |
Idées
Idées pour un jeu comme LeekWars :
- gradient de réaction chimique (à être appliqué par le serveur)
- population décentralisée, une instance de l'IA par case colonisée ou par cellule, ressources très restreintes (idée 1000i100)
- Ferris
- autres mascottes de langages
Nom : Cultivar ou Cultivars
Problèmes
-
passer des objets contenant des références ou pointeurs
-
sandbox sûre
-
limitation de mémoire et de temps d'exécution (watchdog ?)
-
isoler les instances d'IA
-
comment exposer des fonctions de l'hôte avec sc-executor ?
- ne pas exposer de fonctions, seulement tout donner en argument et récupérer une liste d'actions ensuite mais c'est gênant pour les fonctions non-déterministes du point de vue du WASM, et il faut que le WASM maintienne l'état du jeu à jour
-
comment le WASM peut-il appeler des méthodes sur une struct de l'hôte ?
- forker sc-executor-wasmtime pour que
create_runtime
prenne&mut impl HostFunctions
et non juste son type. Mais alors si on veut exposer des méthodes&self
il faut le refléter dans#[runtime_interface]
or le WASM ne connaît pas le pointeur vers leHostFunctions
.- Un wrapper de
HostFunctions
? - créer une variante de
#[runtime_interface]
qui ajoute qqchose comme&mut Context
dans les fonctions côté hôte
- Un wrapper de
- forker sc-executor-wasmtime pour que
-
refaire wasm-bindgen sans JS ?
-
sp-runtime-interface mais virer les trucs inutiles
Build
Runtime (AI)
cargo build --release -p runtime
Executor
cargo run -p executor