Loader

Shoutbox

Scripts indomables

Publicado por dixon, Junio 04, 2022, 06:04:42 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Junio 04, 2022, 06:04:42 AM Ultima modificación: Junio 04, 2022, 06:49:16 AM por dixon
Hola, saludos caramaradas.

"Scripts indomables"


En este post les contaré sobre algunos scripts que intenté programar pero no pude concretarlos:


Script 1: pote de pintura:
Una vez quise crear mi propia herramienta de dibujo y para hacerla completa tenía que desarrollar un código que permitiera colorear un área de dibujo como lo hace el pote de pintura de paint.


El script tenía que recorrer toda el área como si estuviera programando un desbordamiento de agua sobre un laberinto, después de mucho esfuerzo y varios días  de programación logré crear una especie de Sudoku giratorio que se multiplicaba como virus  hasta que encontrase un límite. Algo como eso:


Lo dejé luego de muchos intentos ya que en un momento no logré comprender que más podía hacer.



Script 2: execute_string(str)
El execute string era una función que estuvo presente hasta game maker 8, con ella podíamos transformar un string en un código real, es decir si escribíamos: execute_string("draw_text(0,0,'Hola mundo')") se ejecutaba el draw_text y se mostraba "hola mundo". Con dicha función y un poco de imaginación se podía crear un game maker dentro de game maker. Los ingenieros del GML simplemente la llamaron obsoleta y luego dijeron que al no ser compatible con todos los módulos no era necesaria.




Cuando decidí re crear esta función con el mismo game maker, me topé con el inconveniente de la velocidad de procesamiento, pero esa no fue excusa para seguir adelante, entonces lancé la primera versión "execute_string(str)".

Cuando decidí mejorar el script para presentar una segunda versión, el script reveló un problema complejo que los ingenieros del game maker se negaron a solucionar.




El problema es el siguiente:
Que una simple suma dentro de un string pueda resolverse, ejemplo:

numero = real("5+5");
draw_text(0,0,numero);



Para lograr el "execute_string(str)" no solo hay que resolver ese pequeño inconveniente, también hay que apoyarse fielmente a las reglas matemáticas y crear un código que resuelva strings de ecuaciones, ejemplo: "5+6*17/3+5*(3+2-(4*5))". Y ese es solo el primer reto del script, luego hay que enseñarlo a reconocer funciones, corregirlas de ser necesario y otras cosas extrañas, y todo esto solo para que el resultado final sea medianamente interesante.

Después de muchos esfuerzos y códigos extraños que resolvían funciones de una manera absurda, el script fue aumentando en complejidad, me obligó a empezar de cero varias veces para reorganizar; la dificultad no dejaba de aumentar y a pesar que me divertí en el desarrollo del mismo durante un buen tiempo, lo abandoné, no recuerdo porqué pero creo que me estaba apartando de la sociedad.


Bueno, por ahora me despido, faltó hablarles sobre el script de plataforma 360, el script que permite que el enemigo encuentre al player atravesando muros, y otros que por ahora no recuerdo pero que poco a poco iré mencionando.

¡Bay!




Si Dios quiere; Limpiaré la oficina, puliré el piso y les serviré café a todos, luego, me enseñarán a programar e iré a comprarles más café.

Vale, un bote de pintura.
Eso fue un buen quebradero de cabeza cuando hice Pixel Maker.
E incluso cuando lo logré, el resultado es un poco ineficiente y lento.
Es parte de la diversión en la informática: Ver como cosas que parecían fáciles no lo son.

Junio 04, 2022, 09:23:51 PM #2 Ultima modificación: Junio 04, 2022, 09:56:57 PM por Jeffrey Faper
Interesante. Este tio tiene tutoriales sobre generacion procedural muy buenos  y justamente tiene uno sobre el algoritmo flood_fill
tal vez le ayude a concretar su script de bote de pintura...

algoritmo floodfill:
https://refreshertowelgames-wordpress-com.translate.goog/2021/01/25/procedural-generation-in-gms-5-a-flood-of-fills/?_x_tr_sl=auto&_x_tr_tl=es&_x_tr_hl=es#slow

wiki algoritmo floodfill:
https://es.wikipedia.org/wiki/Algoritmo_de_relleno_por_difusi%C3%B3n

Powered by EzPortal