Registrarse

[Investigacion] Bridge entre Nintendo DS y Pokemon Showdown

Mostazanik

No compila.
Hola gente bonita, espero que esten bien, les comento un poco una hipotesis que hice hace unos dias (y que he estado trabajando).

En teoria, si la NDS tiene compatibilidad con red, entonces es, en papel, posible conectarla con el backend de Pokemon Showdown y hacer un cliente; Si, estoy super consciente que la NDS no puede ni en carretilla establecer un websocket sin que te revienten el ARM7 y el ARM9, estamos de acuerdo, pero... ¿Y si la NDS hablara por TCP con un client que SI pueda gestionar Websockets?

La idea es sencilla, levantar un backend bridge/proxy entre Pokemon Showdown y la Nintendo DS, un intermediario que hable binario a la NDS y gestione la sesion tal como espera Pokemon Showdown.

Bueno, la verdad es que llevo unos dias esquemando un posible bridge, tanto el protocolo de comunicacion como arquitectura del mismo, les dejo el diagrama en PlantUML de lo que llevo, el protocolo no esta completo, pero creo que con lo que llevo se entiende un pelin a que quiero llegar xD.

¿Que opinan? Miren, no soy muy constante con estas cosas, no quiero prometer nada, pero de ser posible voy a tratar de actualizar esta "¿investigacion?" desarrollo/cosa los sabados.
 

Manurocker95

Doctorando en Ingeniería Biomédica & Game Dev
Miembro insignia
Hola gente bonita, espero que esten bien, les comento un poco una hipotesis que hice hace unos dias (y que he estado trabajando).

En teoria, si la NDS tiene compatibilidad con red, entonces es, en papel, posible conectarla con el backend de Pokemon Showdown y hacer un cliente; Si, estoy super consciente que la NDS no puede ni en carretilla establecer un websocket sin que te revienten el ARM7 y el ARM9, estamos de acuerdo, pero... ¿Y si la NDS hablara por TCP con un client que SI pueda gestionar Websockets?

La idea es sencilla, levantar un backend bridge/proxy entre Pokemon Showdown y la Nintendo DS, un intermediario que hable binario a la NDS y gestione la sesion tal como espera Pokemon Showdown.

Bueno, la verdad es que llevo unos dias esquemando un posible bridge, tanto el protocolo de comunicacion como arquitectura del mismo, les dejo el diagrama en PlantUML de lo que llevo, el protocolo no esta completo, pero creo que con lo que llevo se entiende un pelin a que quiero llegar xD.

¿Que opinan? Miren, no soy muy constante con estas cosas, no quiero prometer nada, pero de ser posible voy a tratar de actualizar esta "¿investigacion?" desarrollo/cosa los sabados.
Si quieres hacer algo así yo tiraría más por Nintendo 3DS que sí puede gestionar requests y envíos fácilmente.
 

Mostazanik

No compila.
De hecho, NDS también es una consola más antigua, yo también apostaría por 3DS, y visto lo viva que está la scene en ella, tendría mucho más éxito (lo probaría hasta yo).
Ciertamente, estoy completamente de acuerdo, pero... realmente si quisiera hacer algo realmente usable estaria apuntando a mercados como Android y no tanto al homebrew per se, ademas, salendo para NDS vanilla va a terminar en la 3DS, Wii U y en un emu random igualmente.

Ademas, no es tanto por comodidad, como si porque la NDS siempre me gusto como consola, esa libertad que me daba el R4 de chico y ver los juegos que se hacian me hace ilusion, se que no es el sweet spot, pero si funciona, podria ser divertido.
 

Mostazanik

No compila.
Update 1:

Bueno, luego de pushear una semana con el bridge, pude establecer comunicacion con el dataset de Pokemon Showdown, tuve que hacer un "protocolo" (?) de comunicacion entre la NDS y el bridge tomando en concideracion que un JSON facilmente puede pesar sus bueno megabytes, de momento solo estoy enviando algunos strings, el heartbeat al server y metadatos del host principal del juego (en mi caso, para evitar baneos y cosas raras, un container feo que monte de showdown).

Por el lado del bridge, el mismo es un runtime que hice en NIM, es un lenguaje de programacion no muy estandar, pero se me hizo perfecto para el proyecto, es ligero al ser compilado a C y se puede pegar con chicle al container de showndown sin que consuma mucho mas, se puede mappear cuantos jugadores admite el bridge (decidi poner un limite de jugadores en caso de que tenga alguna condicion de carrera media rara se pueda mitigar).

Habemus screenshot, pero no es nada bonito o "flexeable" aun.
emu_tests.png
1776316924487.png
 

Micael_Alighieri

Emperador Kaktiácero
Redactor/a
Miembro de honor
Me disculpo si no llego a usar el lenguaje más adecuado, o si no consigo entenderlo del todo y digo algo fuera de lugar, ¡pero habrá que intentarlo!

A juzgar por la imagen, deduzco que has acertado de lleno al evitar usar un JSON completo en esta etapa del desarrollo. Entiendo también que la memoria de la NDS está muy limitada, y de hecho, es posible que tengas que desarrollar un protocolo binario propio con IDs en lugar de tirar de literales de cadena.
 
Arriba