1. Introducción a Rogl
Mi nombre es Chris McCormick, un desarrollador de software independiente. He estado creando juegos basados en la web, y hoy estoy aquí para hablar sobre mi último juego, Rogl. Es un juego roguelike en línea minimalista que se juega en el navegador. El juego presenta una jugabilidad estratégica por turnos, movimiento basado en cuadrícula y muerte permanente del personaje del jugador.
Mi nombre es Chris McCormick, y soy un desarrollador de software independiente. He estado trabajando como freelance la mayor parte de mi vida, y recientemente he estado construyendo microempresas en línea. También me gusta crear juegos y música generada proceduralmente y aplicaciones de música. Hoy estoy aquí para hablar sobre Rogl. El primer programa de computadora que escribí fue un juego por turnos en el Apple IIe en algún momento de 1980. Tenía alrededor de ocho años y pronto descubrí que me gustaba más crear juegos que jugarlos, así que seguí haciendo juegos. Y hoy en día hago juegos basados en la web. Rogl es mi último juego y de eso es de lo que estoy aquí para hablar hoy. Es un juego roguelike en línea minimalista que se juega en tu navegador. Juegas como un elfo que se mueve por un calabozo, atacando a monstruos, recogiendo objetos y tratando de encontrar un santuario para poder ascender. Todos obtienen el mismo calabozo cada día y tienes una oportunidad para cada calabozo del día. Se han jugado alrededor de 350,000 juegos roguelike desde 2022 y se juegan alrededor de 1,000 a 2,000 juegos todos los días. Si buscas el hashtag roguel en las redes sociales, probablemente verás a personas compartiendo sus juegos. He estado jugando roguelikes desde que el Intel 286 era una computadora rápida. La palabra roguelike proviene del juego Rogue que se lanzó en 1980. Es una exploración de mazmorras a través de niveles generados proceduralmente con jugabilidad por turnos, movimiento basado en cuadrícula y muerte permanente del personaje del jugador. En estos días, muchos juegos han entrado en el género roguelike y su significado se ha diluido. Para mí, estas características son las que hacen que los roguelikes sean geniales y mi juego Roguel se adhiere a ellas. La jugabilidad estratégica por turnos es particularmente importante. Te da espacio para pensar y elimina el estrés
2. La historia de Rogl
Rogl es un tipo diferente de juego roguelike con emojis, jugabilidad rápida y una experiencia de usuario sencilla. Comenzó como un proyecto de siete días inspirado en Wordle y ganó popularidad después de ser compartido en el subreddit de juegos web, atrayendo a 135,000 jugadores. La primera lección de esta charla es que a veces incluso los buenos proyectos pueden no tener éxito en línea, pero sigue siendo válido construir algo que personalmente desees.
Una de las cosas que hacen que Rogl sea diferente de los roguelikes tradicionales es el uso de emojis, lo que contribuye a una experiencia de juego más tranquila. Hay un par de cosas que hacen que Rogl sea diferente de los roguelikes tradicionales. Lo primero y más obvio son los emojis y es un juego rápido con sesiones que duran alrededor de un minuto. En segundo lugar, no tiene gestión de inventario. Todos los objetos que recoges se utilizan automáticamente. En tercer lugar, solo tiene un nivel y no hay descenso más profundo en el calabozo. La profundidad y complejidad de los roguelikes se intercambia por sesiones rápidas y amigables para el usuario. Creo que esto, junto con ser basado en la web, es lo que lo hace accesible a un público más amplio. También dediqué bastante tiempo a hacer que la experiencia de usuario fuera súper sencilla. Rogl comenzó su vida en una jam de roguelike de siete días a principios de 2022. Había estado pensando en hacer un roguelike basado en emojis durante un tiempo. Alrededor de esa época, escuché una gran entrevista con el creador de Wordle, Josh Wardle. Comencé a pensar en cómo aplicar algunos de los principios de Wordle a un juego roguelike. Así que construí el juego en una semana por 70 RL. Y cuando terminé, estaba bastante satisfecho con lo que había construido. Era divertido de jugar, tenía una condición de victoria, una condición de derrota y una pequeña función para compartir en las redes sociales al final del juego. Después de lanzarlo, puse el juego en línea y tenía alrededor de 30 jugadores regulares al día. Incluso las personas compartían los registros del juego, lo cual fue bastante agradable. Avancemos rápidamente aproximadamente 1 año, durante el cual cambié muy poco sobre Rogl. Alrededor de 30 personas al día todavía lo estaban jugando y no había sucedido mucho más. Luego, un día descubrí el subreddit de juegos web. Pensé que era bastante genial, así que decidí publicar sobre Rogl allí. Lo publiqué y me fui a dormir. Durante los siguientes días, 135,000 personas jugaron a Rogl. Llegó al número 1 en Hacker News, la cuenta de Twitter de Github lo retuiteó y fue mencionado en una popular revista en línea japonesa, todo lo cual fue bastante sorprendente. Nada de eso habría sucedido si no lo hubiera compartido en el subreddit de juegos web. Así que creo que esta es la primera lección de mi charla. Todos hemos tenido esa experiencia de crear algo que creemos que es bastante bueno y luego lo publicamos en línea y parece que al mundo simplemente no le interesa. Bueno, hay 2 posibles razones por las que eso sucede. La primera razón es si tu cosa es mala o si es mala para todos excepto para ti, lo cual está bien. Construir algo porque solo tú lo quieres es una razón perfectamente válida para construirlo.
3. Marketing and Giving Your Creations a Chance
Fundamentalmente, construí Rogl para abordar el problema de que las personas adecuadas no se enteraran de él. Es importante darle una oportunidad a tus creaciones informando a las personas que podrían necesitarlas. El marketing se trata simplemente de informar a las personas, no de manera molesta o spam, sino a aquellos que puedan estar interesados. Si has hecho eso y aún nadie lo quiere, está bien pasar a otra cosa, pero al menos dale una oportunidad.
algo. Fundamentalmente, por eso construí Rogl. Y no todo tiene que ser popular. Pero la segunda razón, la segunda posible razón es la importante para geeks como nosotros, que es que tal vez nadie se enteró de ello o las personas adecuadas no se enteraron de ello. Así que las personas adecuadas para enterarse de ello son aquellas que necesitan lo que has creado pero aún no saben que existe. Si quieres darle una oportunidad a las cosas que creas, es realmente importante que las personas que podrían necesitarlas las vean. Si nunca las ven, nunca sabrán que existen y nunca las usarán. Creo que los geeks tienden a asumir que nuestro proyecto fracasa porque es malo, cuando a menudo la segunda razón es por qué no funciona. Las personas adecuadas nunca se enteraron de ello. Así que Rogl me enseñó esta lección de una manera muy obvia, porque fue el experimento perfecto en marketing. Permaneció allí durante un año sin cambios y luego, tan pronto como hice un poco de marketing discreto, explotó. Entonces, ¿qué es el marketing? Básicamente, se trata simplemente de informar a las personas sobre lo que has creado. No de manera molesta o irritante o diciéndoselo a personas que no les importa, sino encontrar a las personas a las que crees que les interesa y contarles sobre ello. Y como mínimo, debes darle una oportunidad a tu proyecto para prosperar. Si informas a las personas adecuadas y aún nadie lo quiere, entonces está bien. Puedes dejarlo ir y seguir adelante. Pero al menos ahora debes darle una oportunidad.
4. Frugalidad y Subingeniería
La frugalidad es importante cuando se trata de nuestro propio tiempo. Rogl, con 130,000 juegos jugados en dos días, se ejecuta en un solo y económico servidor de Digital Ocean. Construyo cosas pequeñas y rápidas para ver qué funciona. Minimizar implacablemente las características y participar en game jams son estrategias para la frugalidad.
De acuerdo, ese es el primer punto que quiero destacar en mi charla. Mi segundo punto se trata de la frugalidad y la subingeniería. La frugalidad es la cualidad de ser frugal, ahorrativo, prudente o económico en el consumo de recursos, como alimentos, tiempo o dinero. Y evitar el desperdicio, la ostentación o la extravagancia. Entonces, ¿cuál es la cosa más valiosa que tenemos como seres humanos? Es nuestro tiempo. Para mí, la frugalidad es especialmente importante cuando se trata de nuestro propio tiempo. Si recuerdas, mencioné anteriormente que Rogl tuvo 130,000 juegos jugados en dos días. El número de solicitudes individuales que llegaron al servidor alcanzó los millones, y no hubo tiempo de inactividad durante ese período. Entonces, es posible que te sorprenda saber que no se ejecuta en ninguna plataforma de escalado automático. No tiene un clúster de
Kubernetes, no utiliza imágenes de
Docker e incluso no tiene un CDN. Puede sorprenderte saber que se ejecuta en un solo y económico servidor de Digital Ocean. Tal vez aún más sorprendente es que tengo alrededor de 30 aplicaciones en funcionamiento en ese servidor de $12 al mes. Y al igual que Rogl, algunas de esas aplicaciones web también reciben decenas de miles de visitantes al mes. Al igual que Rogl, la mayoría de esas aplicaciones web también ejecutan SQLite en producción. Entonces, quiero decir, construyo muchas cosas porque me gusta experimentar con diferentes ideas. Mi estrategia básica de desarrollo es construir cosas pequeñas y rápidas y ponerlas en línea, mostrarlas a las personas y ver qué funciona. Para hacer esto, tengo que ejecutar las cosas de manera excepcionalmente económica porque la mayoría de las cosas fallan. Ahora te voy a contar sobre mi tecnología y cómo ejecuto las cosas de manera económica. La primera parte es el bajo costo durante la fase de desarrollo. Cuando tengo una idea, no quiero pasar meses o años viendo si es buena. Porque eso desperdicia tiempo precioso. Quiero saberlo lo antes posible. Entonces, construyo cosas de manera económica utilizando cuatro estrategias básicas. La estrategia número uno es minimizar implacablemente las características. A los ingenieros les encanta la complejidad, pero en realidad es el enemigo. Debes detenerte y preguntarte cuál de mis cero usuarios realmente quiere esta característica. Elimina literalmente todo lo que no sea el mecanismo principal o la única cosa que el juego de Apple debe hacer. Podría haber agregado todo tipo de cosas a Rogl, pero no lo hice. Y creo que eso me permitió lanzarlo realmente.
5. Estrategias de Construcción y Frugalidad
Un game jam es el dojo perfecto para la frugalidad. Mi segunda estrategia es construir por mí mismo. Algunas personas son buenas trabajando en equipo, pero siempre he encontrado que me limita. La comunicación naturalmente agrega fricción.
Por supuesto, los game jams son una excelente manera de entrenarse en la frugalidad. Un game jam es el dojo perfecto para la frugalidad. Mi segunda estrategia es construir por mí mismo. Algunas personas son buenas trabajando en equipo, pero siempre he encontrado que me limita. La comunicación naturalmente agrega fricción. Tener que consultar decisiones técnicas o artísticas con otra persona ralentiza el proceso. No creo que esta sea una regla fija y dura. Algunas personas tienen grandes asociaciones con mucha confianza y entendimiento. He participado en game jams con amigos antes y es divertido. Creo que si encuentras a las personas adecuadas que entienden cómo construir cosas y trabajan bien juntas, entonces es posible unirse en equipo. Para
6. Encontrar la Mejor Tecnología para la Eficiencia
El meme de que la tecnología no importa es bastante controvertido. Si bien es cierto que puedes construir cualquier cosa con la tecnología que ya conoces, invertir tiempo en encontrar la mejor tecnología para ti puede ahorrarte tiempo y evitar complejidades innecesarias. La clave está en encontrar una tecnología que te permita avanzar rápidamente.
para mí siempre ha sido fácil construir más rápido por mí mismo. Así que mi tercera estrategia para construir de manera frugal, es probablemente bastante controvertida. Hay un meme que dice que la tecnología no importa. Solo usa lo que sabes. Puedes construir cualquier cosa con cualquier tecnología, y esto es cierto con el famoso ejemplo de Peter Levels construyendo sus startups millonarias con
PHP y JQuery. Así que es cierto que puedes construir cualquier cosa con la tecnología que ya conoces. Especialmente si eres un genio del marketing como Peter. Pero estoy aquí para decirte que también puedes perder menos tiempo si inviertes algo de tiempo en encontrar la mejor tecnología para ti. No me refiero a la mejor tecnología para startups en Silicon Valley o la mejor tecnología para los nerds en Hack News, o incluso la última extravagancia complicada que alguien subió a NBN. Lo que quiero decir es encontrar la mejor tecnología que te permita avanzar rápidamente. Así que no apiles las probabilidades
7. El Poder de ClojureScript
La mejor tecnología para mí es ClojureScript. A pesar de sus desafíos iniciales con la sintaxis Lisp y la inmutabilidad, descubrí que después de unas semanas de construir en este lenguaje, podía avanzar mucho más rápido que antes. En comparación con PHP, Python y JavaScript, ClojureScript era significativamente más rápido, lo que me permitió incluso construir mi propio marco web. El costo de construir y mantener mi propio marco web en ClojureScript es menor que usar Python y Django. ClojureScript es la mejor tecnología para mí para avanzar rápido.
No te enfrentes a ti mismo utilizando tecnología que te ralentiza. Evita la complejidad a toda costa. Así que para mí, la mejor tecnología resulta ser ClojureScript. Me presentaron a Clojure por un amigo durante una competencia de creación de juegos hace unos años. Al principio, lo encontré bastante desafiante. La sintaxis Lisp era diferente a cualquier cosa que había codificado antes. La inmutabilidad era extraña y restrictiva. La programación funcional me gustaba, pero era bastante hardcore. Lo que sucedió fue que descubrí que después de unas semanas construyendo en este lenguaje, me movía mucho más rápido que antes. Como me gusta construir muchas cosas, esto fue muy impresionante. Así que, ya sabes, he usado
PHP y Python y
JavaScript en producción durante décadas. Pero en comparación, ClojureScript era mucho más rápido que todos ellos, incluso pude construir mi propio marco web, por lo que ya no tuve que usar Django y Python. Nunca hubiera intentado construir mi propio marco web en un lenguaje diferente. El costo de construir y mantener mi propio marco web en ClojureScript resultó ser menor que quedarme con Python y Django. Así que ClojureScript es la mejor tecnología para mí para avanzar rápido.
8. ClojureScript: Velocidad y Despliegue
ClojureScript es más rápido debido a su sintaxis Lisp, mutación restringida y énfasis en la recarga en vivo. El navegador proporciona gráficos, fuentes, sonido, entrada, redes y acceso fácil de forma gratuita. Reutilizar activos, mecánicas de juego y código en ClosureScript acelera el desarrollo. El despliegue en un solo VPS puede ser complicado debido a la configuración y la instalación de dependencias.
Entonces, ¿qué hace que ClojureScript sea más rápido? En primer lugar, su sintaxis Lisp. Debido a que tu editor de texto comprende la sintaxis, puede ayudarte a manipular y refactorizar el código mucho más rápido. Por lo tanto, puedes usar teclas individuales para mover el código y, como hay mucho menos sintaxis y código redundante, es más rápido porque escribes menos errores. La mutación está restringida en el lenguaje y debes escribir en un estilo muy funcional, lo que inherentemente conduce a menos errores. Es más rápido porque la comunidad de Clojure community pone un gran énfasis en la recarga en vivo y el desarrollo interactivo. Las herramientas te permiten recargar el código en tiempo real a nivel de función. En términos prácticos, esto significa que cuando escribo un juego como Rogl, no tengo que actualizar la página. Si actualizo la IA de un monstruo, el monstruo simplemente cambia su comportamiento en ese momento en el tiempo. No tengo que volver a cargar la página ni recrear el estado del juego para probar el cambio. El estado y la página permanecen iguales y solo se actualiza el comportamiento del monstruo.
Entonces, la mejor tecnología para mí también es el navegador. Sé que todos usan Unity para construir juegos pero obtienes muchas cosas gratis en el navegador. Obtienes gráficos, fuentes, sonido, entrada, redes, fácil acceso para los usuarios, actualizaciones simples y portabilidad de plataforma, todo de forma gratuita. La consola de desarrollo es increíble. Puedes adjuntar data a un elemento DOM, inspeccionarlo y ver en tiempo real qué está sucediendo con tu entidad de juego. Me encanta trabajar en el navegador y supongo que por eso estamos todos en esta conferencia, así que no necesito convencerte de eso. Por último, para construir más rápido, intenta reutilizar activos existentes, mecánicas de juego y código siempre que sea posible. ClosureScript facilita especialmente la reutilización de código. La naturaleza funcional y la integración con el editor me permiten copiar y pegar funciones y comportamientos y simplemente funcionan en mi nuevo código porque el código funcional puede ser en gran medida independiente del contexto. Utilicé gráficos de emoji y esta reutilización de activos eliminó una gran parte de lo que es consumidor de tiempo en las maratones de desarrollo de juegos. También utilicé fuentes en línea gratuitas y de código abierto. Reutilicé mecánicas de juego porque había construido algunos roguelikes en el pasado. Pude afinar las mecánicas principales de los roguelikes copiando mis juegos anteriores y leyendo el código fuente de otros juegos. Si intentara inventar una mecánica de juego completamente nueva desde cero, el proyecto habría llevado mucho más tiempo. Así que esa es la parte de construcción del desarrollo frugal. Reduce las características, minimiza el tamaño del equipo, utiliza la mejor tecnología para avanzar rápido y reutiliza activos, código y mecánicas de juego. La segunda parte del desarrollo frugal es la historia del despliegue. Así que te conté cómo ejecuto todo en un solo VPS. Bueno, todos sabemos que desplegar en tu propio VPS es complicado. Siempre tienes que pasar mucho tiempo configurando nginx, ordenando certificados SSL e instalando
9. Usando Piku como una solución rentable
Si tu proyecto tiene éxito, usar una plataforma como servicio como Netlify puede volverse costoso. Por eso recomiendo usar Piku, una plataforma como servicio de código abierto que puedes ejecutar en tu propio servidor. Es rápido, ligero y fácil de usar. Soy un colaborador principal de Piku y también ofrezco un servicio para aprovisionar y mantener cajas VPS de Piku.
dependencias. Y a veces tienes que hacer esto cada vez que haces un cambio. Claro, podrías usar Netlify u otra plataforma como servicio y eso es una gran solución si quieres avanzar rápido, pero ¿qué pasa si tu proyecto explota como Rogal y algunos de mis otros proyectos tienes que lidiar con grandes facturas de
AWS o Firebase o Netlify y el alojamiento comienza a ser muy caro, especialmente cuando hablamos de ejecutar alrededor de 30 aplicaciones prototipo.
Tuve la suerte de encontrar Piku hace unos años. Piku fue creado por un tipo llamado Rui Kamo. Es una plataforma como servicio de código abierto que se ejecuta en tu propio VPS. Es como un Heroku de bolsillo donde tienes acceso root. Es rápido, ligero y el código fuente es muy simple. Despliego todas mis aplicaciones con él. Instalar Piku es tan simple como ejecutar un comando como root y luego se encarga de configurar los entornos, instalar dependencias, aprovisionar certificados SSL y hacer proxy con nginx hacia tu aplicación. Agregar una nueva aplicación es tan simple como agregar un control remoto de git y todo el despliegue etc. se realiza con un simple comando git push para desplegar, al igual que en Netlify o Heroku. Ahora soy un colaborador principal de Piku, así que si necesitas ayuda con él, contáctame. También ofrezco un servicio de aprovisionamiento y mantenimiento de cajas VPS de Piku, así que si tú o tu equipo están buscando una plataforma como servicio privada completamente administrada donde obtienes tu propio VPS dedicado puedes ponerte en contacto en pikuvps.com. He desplegado esto para un par de clientes y
10. Deployment, Maintenance, and Low-Cost Strategies
Una forma de facilitar el despliegue es ejecutar SQLite en producción, lo cual no requiere configuración y elimina la necesidad de un servidor de base de datos separado. El mantenimiento puede mantenerse a bajo costo dejando lo que funciona funcionando y enfocándose en solucionar errores y agregar nuevas características a tu propio ritmo. Hacer que la aplicación sea pesada en el front-end y realizar cálculos del lado del cliente también puede reducir los costos de mantenimiento. En resumen, es importante informar a las personas sobre tu proyecto y priorizar el desarrollo rápido y la retroalimentación de los usuarios.
les gusta mucho. Otra cosa que puedes hacer para facilitar el despliegue es ejecutar SQLite en producción. No requiere ninguna configuración y no tienes que mantener un servidor de
database separado en ejecución para examinar la
database en vivo, simplemente puedes copiarla localmente. Sí, es muy sencillo de trabajar. Utilizo un paquete llamado KEYV, K-E-Y-V, de
npm que lo configura como una base de datos no SQL, por lo que obtienes una tabla de clave-valor. Funciona como almacenamiento local en el navegador, pero en el lado del servidor es muy bueno.
La tercera parte del desarrollo frugal es el mantenimiento. Por supuesto, tu juego tendrá errores. Si obtiene tracción, por supuesto que la gente pedirá características. Mi solución es bastante simple: no hables con nadie y no arregles nada. Mi rastreador de problemas está lleno de maleza rodante. Quiero decir, solo estoy bromeando, pero he hecho y he hecho un poco de mantenimiento en frugal para mantener el sitio saludable, pero en realidad hay bastantes errores antiguos en él y la gente todavía juega todos los días. Así que creo que puedes llegar lejos dejando lo que funciona funcionando. Planeo hacer un empuje de desarrollo pronto para volver y solucionar algunas de estas cosas y agregar algunas características nuevas, pero puedo hacerlo cuando esté listo. Debido a que lo construyo y lo ejecuto de manera económica, puedo hacer esto en mi propio tiempo y programación sin ninguna urgencia. Básicamente, tengo tiempo indefinido.
La otra forma de mantener el mantenimiento económico es hacer que tu aplicación sea pesada en el front-end. Tal vez esté predicando a los convertidos aquí. Generalmente trato de construir cosas completamente estáticas para que no se requiera un servidor. Si necesito un lado del servidor para cuentas de usuario o almacenamiento, trato de hacerlo un almacenamiento autenticado tonto sin mucha lógica backend. Así que mantén todo en el front-end. Todos los cálculos deben realizarse del lado del cliente, porque el cálculo más barato de todos es el cálculo del propio usuario. Si el cálculo se realiza en el navegador, no tienes que pagarlo. Estas son las tres formas en que mantengo los costos bajos. Desarrollo de bajo costo al minimizar características y usar ClojureScript para desarrollar rápidamente. Despliegue de bajo costo mediante el uso de Piku y SQLite en producción. Mantenimiento de bajo costo al hacer que el front-end sea pesado y solo cambiar las cosas a su propio ritmo. Así que quiero terminar hablando de lo que viene para Rogl en el futuro. He estado pensando mucho en nuevas características e ítems, monstruos y posiblemente incluso mundos completamente nuevos. Tengo varios escenarios en mente para nuevos mundos y nuevos niveles para agregar al juego. En su increíble curso en línea gratuito, Masahiro Sakurai dice que nuestro único trabajo es entretener a los jugadores. Así que me pregunto cuál es el siguiente movimiento para Rogl que entretendrá más a los jugadores. También he estado pensando en formas de convertir Rogl en un proyecto financieramente sostenible. Algo en lo que pueda justificar pasar más tiempo, lo que básicamente significa ganar dinero con ello. Soy muy cauteloso de no arruinar lo bueno de Rogl, así que estoy abordando esta fase de manera muy cuidadosa y deliberada. Si puedo encontrar una forma de entretener más a los jugadores de Rogl y tal vez tener algunas mejoras opcionales para las personas que las deseen, quizás eso me dé más tiempo para dedicar al proyecto y mejorarlo para todos. Eso sería un beneficio mutuo para los jugadores y para mí mismo. Así que para resumir los dos puntos principales de mi charla. El número uno es asegurarse de contarle a la gente sobre lo que estás construyendo y el número dos es dedicar tiempo a descubrir herramientas y técnicas para moverte rápido y poner tus ideas frente a los usuarios lo antes posible para obtener retroalimentación. Eso es todo. Muchas gracias por tenerme aquí.
Comments