Sharing save/load tricks (DRY, WASM)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 20/100
- Tipo de issue
- Documentación
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- rust, wasm
- Área
- documentation
Línea de trabajo
Este issue comparte una implementación externa de guardado/carga de WASM en lugar de solicitar un cambio específico. Si lo exploras, empieza con la macro enlazada de rktrl_macros/src/lib.rs y su uso en src/systems/saveload.rs, y después revisa los cambios mencionados en las features de dependencias de Cargo.toml; el issue no define cómo sería la finalización.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hey @thebracket! Thank you for the amazing library and book, I'm having a blast following along. This is not so much an "issue", but rather sharing what I learned in case you want to use it in the book at some point. I'll do it tl;dr style to respect your time:
- I've added saving / loading under WASM in https://github.com/abesto/rktrl/commit/b0da9c00125ba9bc2335f0403576b28e56c063f5. Basically it uses local storage (base64 encoded, because I GZip the saved file on the cross-platform code path).
- FWIW, the sentence "Supporting saving via LocalStorage (a browser/JavaScript feature) is planned for a future version of RLTK." confused me for a second - RLTK doesn't explicitly support saving / loading outside the browser either, it's all
serdeandspecs(AFAICT at least).
- FWIW, the sentence "Supporting saving via LocalStorage (a browser/JavaScript feature) is planned for a future version of RLTK." confused me for a second - RLTK doesn't explicitly support saving / loading outside the browser either, it's all
- Reaching for increasingly big hammers, I managed to set up a procedural macro so that for the save / load systems there is zero repetition of the components (check out the macro and its usage). The big idea here is using the macro to split the tuple of components into chunks of at most 16, so that we can then rely on the the
specs_derive-provided implementations for those.- I'm toying with the idea of creating a similar macro to cut down on the boilerplate involved with creating system data structs (but that's less relevant as currently the tutorial doesn't use them)
- Getting things to compile for WASM in the first place was a bit tricky as dependencies pulled in parallel Specs features in their
default-features, which trigger threading. Had to disable them incargo.toml(see https://github.com/abesto/rktrl/commit/72a7a119385ca6ae5c6871dd31d281ba842d0ffe). I guess there might be a better way of doing this (maybe controlling whether a parallel dispatcher is used from code).
Finally, I wanted to add that I know how overwhelming input about big huge changes to writing projects can be, so wanted to explicitly say: no pressure, take these when and if they're useful. Even until then, maybe this will in itself be useful for someone else. Thank you again!
- Lenguaje dominante
- Rust
- Estrellas
- 967
- Forks
- 165
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de amethyst/rustrogueliketutorial
-
Wrong typing in chapter 57aAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
-
[RESOLVED] Wayland IssueAbierto
Dificultad 1/5 1-3 horas Aptitud para principiantes 45/100
Todos los issues de amethyst/rustrogueliketutorial
Issues similares
-
The book has a Nix install section that chelis.ch lacks, and it names two of the three systemsAbiertoarea:ecosystem documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Chelis-Lang/chelis#3866 ·
Los mantenedores suelen responder en 1 día
-
bug documentation sev-0
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
dekobon/big-code-analysis#1620 ·
Los mantenedores suelen responder en 3 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100