40 lines
1.6 KiB
Markdown
40 lines
1.6 KiB
Markdown
|
## Idées
|
||
|
|
||
|
Idées pour un jeu comme [LeekWars](https://leekwars.com) :
|
||
|
* 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
|