Go to file
2023-04-01 07:52:41 +02:00
common Initial commit 2023-04-01 07:52:41 +02:00
executor Initial commit 2023-04-01 07:52:41 +02:00
runtime Initial commit 2023-04-01 07:52:41 +02:00
runtime-interface Initial commit 2023-04-01 07:52:41 +02:00
runtime-interface-macro Initial commit 2023-04-01 07:52:41 +02:00
.gitignore Initial commit 2023-04-01 07:52:41 +02:00
Cargo.lock Initial commit 2023-04-01 07:52:41 +02:00
Cargo.toml Initial commit 2023-04-01 07:52:41 +02:00
LICENSE Initial commit 2023-04-01 07:52:41 +02:00
README.md Initial commit 2023-04-01 07:52:41 +02:00
rustfmt.toml Initial commit 2023-04-01 07:52:41 +02:00

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 le HostFunctions.
      • Un wrapper de HostFunctions ?
      • créer une variante de #[runtime_interface] qui ajoute qqchose comme &mut Context dans les fonctions côté hôte
  • https://github.com/demille/wasm-ffi

  • https://demille.github.io/wasm-ffi/docs/rust/

  • http://jakegoulding.com/rust-ffi-omnibus/

  • 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