Propuesta: Manual MK2

Ayuda sobre MT Engine MK2.

Moderador: na_th_an

Avatar de Usuario
miguelo
Mensajes: 3
Registrado: Lun, 07 Mar 2016, 12:07

Propuesta: Manual MK2

Mensajepor miguelo » Sab, 24 Sep 2016, 14:29

Hola compas :) :) :)

A propósito del zx uno estoy pensando en hacer otro juego de Spectrum (Conspiralove fue el primero, con la churrera) pero, en esta ocasión, utilizaría mk2. Veo que hay mucha info repartida por varios sitios y me gustaría, según hago el juego, condensarla en un manual que publicaría en zxdevs.com pero cedería para que estuviese en cualquier lado con licencia CC, por supuesto

La pregunta es ¿mk2 esta cambiando tan rápido como para que esa información quede pronto obsoleta? Así pues, ¿merece la pena el currazo?

Por echar una mano, invierto el tiempo y esfuerzo que sea pero quisiera saber cómo de estable está ahora en framework.

¿Cómo lo veis? Jeje

Abrazotes
Avatar de Usuario
na_th_an
Mensajes: 26408
Registrado: Vie, 09 Ene 2009, 12:18

Re: Propuesta: Manual MK2

Mensajepor na_th_an » Sab, 24 Sep 2016, 15:56

Pues molaría, la verdad.

- MK2 ahora mismo está parado. Nuestro principal desarrollo para Spectrum lleva on hold exactamente un año. Volveremos, pero no sé cuando.
- La versión interna de MK2 añade un porrón de cosas y corrige varios problemas bastante heavy metal que hay en la versión que hay ahora mismo publicada. En tal caso, lo suyo sería usar esta última versión de MK2. Se trata de la versión sobre la que se han construido los remakes de Ramiro que van en la edición física de Verkami y que publicaremos para la libre descarga muy pronto. Para poder hacer esto tendría que encontrar un momento para "desenramirizar" MK2. Creo que podría encargarme este lunes.
- Prácticamente cada juego que hemos lanzado usando MK2 tiene añadidos custom. Siempre los marco muy bien en el código para eliminarlos posteriormente, pero puede que se me cuele algo.
- MK2 es un poco mamut. Llevo un año dedicándome casi exclusivamente a montar motores en NES y cada vez que vuelvo al código de MK2 me entran pernacas XD Da miedo verlo.
- Lo más heavy de MK2 ahora mismo es el scripting. Soporta muchas cosas como alias y macros sencillas y además está preparado para soportar juegos multinivel. Te adjunto la mierdidocumentación por si le quieres echar un ojaldre.

Puedo ayudarte en lo que necesites, pero mi tiempo es extremadamente limitado. De todos modos creo que merece la pena y es algo que la gente disfrutará.
Adjuntos
scripting.txt
(59.79 KiB) Descargado 61 veces
Como diría Rorshach: "Urm..."
Avatar de Usuario
na_th_an
Mensajes: 26408
Registrado: Vie, 09 Ene 2009, 12:18

Re: Propuesta: Manual MK2

Mensajepor na_th_an » Sab, 24 Sep 2016, 16:07

Te pego un ejemplo de script "moderno" de msc3, para que véas cómo mejora la legibilidad con respecto al msc de MK1:

Código: Seleccionar todo

# Some flags.
# Will be using aliases, of course, but I need to keep track of these
# as they are referenced by number in the engine. So...

# 1  - Crosses counter (crosses = tile get)
# 2  -
# 30 - Kill slowly (Evil Zone in the original) is ON
# 31 - Fanties Numb flag, Fanties don't move if it's 0

# Externs:
# 1-30 are reserved by the engine to display level names.
# 31-N are for game text.

# Some aliases

DEFALIAS
   # All purpose
   $ALLPURP            0

   # Crosses (TILE_GET)
   $CROSSES             1

   # For a text the first time we enter screen 7
   $FIRST_TIME            2

   # Ramiro noticing talisman pieces
   $TALISMAN_SAYING      3

   # 'Got everything' warning
   $GOT_EVERYTHING_WARNING   9

   # Puzzle pieces
   $ENCANTAMIENTO_PIMIENTO   10
   $TALISMAN_PIECES      11
   $TALISMAN_1            12
   $TALISMAN_2            13
   $TALISMAN_3            14
   $TALISMAN_4            15
   $TESORO_MORO         16
   $CANIJA_GONE         17

   # Coordenadas de la compuerta
   $GATE_X               20
   $GATE_Y             21

   # Modify the engine behaviour...
   $HECHIZO_POSTIZO       30
   $MURCIELAGO_ON          31
END

# Decorations

INC_DECORATIONS map.bin.spt

# Do

ENTERING GAME
   IF TRUE
   THEN
      # Don't forget to enable CLEAR_FLAGS in config.h!

      # Debug
      # SET $TALISMAN_PIECES = 4
      # SET $HECHIZO_POSTIZO = 1
      # WARP_TO 8, 4, 4
   END
END

PLAYER_GETS_COIN
   # Whenever you get a coin, gain 1 point of life
   IF TRUE
   THEN
      INC LIFE 1
   END

   # Got all CROSSES?
   IF $CROSSES = 20
   THEN
      SOUND 8
      # DISABLE_TYPE_6
      SET $MURCIELAGO_ON = 0
      SET TILE (#$GATE_X, #$GATE_Y) = 0
      EXTERN 49
   END

   IF $CROSSES = 20
   IF $TALISMAN_PIECES = 4
   IF $GOT_EVERYTHING_WARNING = 0
   THEN
      SET $GOT_EVERYTHING_WARNING = 1
      EXTERN 59
      EXTERN 60
   END

   IF $CROSSES = 20
   THEN
      SET $CROSSES = 0
   END
END

# Cripta del Sirviente Vicente

PRESS_FIRE AT SCREEN 2
   IF PLAYER_TOUCHES 9, 7
   THEN
      EXTERN 58
   END
END

# Cripta del Enano Marrano

PRESS_FIRE AT SCREEN 4
   IF PLAYER_TOUCHES 10, 4
   THEN
      EXTERN 54
      EXTERN 55
      EXTERN 56
      EXTERN 57
   END
END

# Screen 6.
# Will detect Ramiro going outside and place a warning
# about doing so.

ENTERING SCREEN 6
   IF TRUE
   THEN
      SET $ALLPURP = 0
   END

   # Create fire zone
   IF $HECHIZO_POSTIZO = 0
   THEN
      SET_FIRE_ZONE 208, 128, 212, 143
   END
END

PRESS_FIRE AT SCREEN 6
   IF $HECHIZO_POSTIZO = 0
   IF $ALLPURP = 0
   IF PLAYER_TOUCHES 13, 8
   THEN
      SET $ALLPURP = 1
      EXTERN 36
   END
END

# Initial screen

ENTERING SCREEN 7
   IF TRUE
   THEN
      SET $ALLPURP = 0
   END

   IF $FIRST_TIME = 0
   THEN
      SET_FIRE_ZONE_TILES 0, 0, 15, 9
      BREAK
   END

   IF $CANIJA_GONE = 0
   THEN
      SET TILE (4, 4) = 27
      SET_FIRE_ZONE_TILES 5, 4, 5, 4
   END

   IF $CANIJA_GONE = 1
   THEN
      SET_FIRE_ZONE_TILES 2, 3, 2, 4
   END
END

PRESS_FIRE AT SCREEN 7
   IF $FIRST_TIME = 0
   THEN
      SET $FIRST_TIME = 1
      SET_FIRE_ZONE 0, 0, 0, 0
      EXTERN 31
      EXTERN 32
      EXTERN 33
      REENTER
   END

   IF PLAYER_TOUCHES 5, 4
   IF $CANIJA_GONE = 0
   IF $TESORO_MORO = 0
   IF $ALLPURP = 0
   THEN
      SET $ALLPURP = 1
      EXTERN 34      
      BREAK
   END

   IF PLAYER_TOUCHES 5, 4
   IF $CANIJA_GONE = 0
   IF $TESORO_MORO = 1
   THEN
      EXTERN 68
      EXTERN 69
      SET TILE (4, 4) = 0
      SHOW
      SOUND 6
      SOUND 5
      EXTERN 70
      SET_FIRE_ZONE_TILES 2, 3, 2, 4
      SET $CANIJA_GONE = 1
      BREAK
   END

   IF PLAYER_TOUCHES 2, 4
   THEN
      SOUND 8
      WIN GAME
   END
END

# Screen 8
# Will detect Ramiro going outside and place a warning
# about doing so.

ENTERING SCREEN 8
   IF TRUE
   THEN
      SET $ALLPURP = 0
   END

   # Create fire zone
   IF $HECHIZO_POSTIZO = 0
   THEN
      SET_FIRE_ZONE_TILES 9, 8, 9, 8
   END

   IF $ENCANTAMIENTO_PIMIENTO = 1
   THEN
      DECORATIONS
         5, 4, 17
         6, 4, 18
         5, 5, 19
         6, 5, 20
      END
   END
END

PRESS_FIRE AT SCREEN 8
   # Warn about the perils of going out.
   IF $HECHIZO_POSTIZO = 0
   IF $ALLPURP = 0
   IF PLAYER_TOUCHES 9, 8
   THEN
      SET $ALLPURP = 1
      EXTERN 36
   END

   # Hechizo postizo
   IF PLAYER_IN_Y_TILES 5, 5
   IF PLAYER_IN_X_TILES 6, 7
   IF $HECHIZO_POSTIZO = 0
   THEN
      EXTERN 37
      EXTERN 38
      EXTERN 39
      EXTERN 40
      EXTERN 41
      EXTERN 42
      EXTERN 43
      EXTERN 44
      EXTERN 45
      SET $HECHIZO_POSTIZO = 1
      BREAK
   END

   # Encantamiento del Pimiento
   IF PLAYER_IN_Y_TILES 5, 5
   IF PLAYER_IN_X_TILES 6, 7
   IF $ENCANTAMIENTO_PIMIENTO = 0
   IF $TALISMAN_PIECES = 4
   THEN
      EXTERN 61
      EXTERN 62
      EXTERN 63
      PAUSE 50
      SET TILE (5, 4) = 17
      SHOW
      SOUND 2
      PAUSE 10
      SET TILE (6, 4) = 18
      SHOW
      SOUND 2
      PAUSE 10
      SET TILE (5, 5) = 19
      SHOW
      SOUND 2
      PAUSE 10
      SET TILE (6, 5) = 20
      SHOW
      SOUND 2
      PAUSE 10
      SOUND 5
      SOUND 5
      PAUSE 50
      EXTERN 64
      EXTERN 65
      SET $ENCANTAMIENTO_PIMIENTO = 1
      BREAK
   END
END

# Cripta de Juanillo el Colmillo

PRESS_FIRE AT SCREEN 11
   IF PLAYER_TOUCHES 10, 8
   THEN
      EXTERN 46
      EXTERN 47
      EXTERN 48
   END
END

# Cripta del Gigante Elegante

PRESS_FIRE AT SCREEN 13
   IF PLAYER_TOUCHES 12, 8
   THEN
      EXTERN 51
      EXTERN 52
   END
END

# La camara del tesoro del moro

ENTERING SCREEN 14
   IF $TESORO_MORO = 0
   THEN
      SET TILE (11, 2) = 28
      SET_FIRE_ZONE_TILES 11, 2, 11, 2
   END

   # Close gate if $ENCANTAMIENTO_PIMIENTO = 0
   IF $ENCANTAMIENTO_PIMIENTO = 0
   THEN
      SET TILE (10, 8) = 16
      BREAK
   END
END

PRESS_FIRE AT SCREEN 14
   IF PLAYER_TOUCHES 11, 2
   IF $TESORO_MORO = 0
   THEN
      SET_FIRE_ZONE 0, 0, 0, 0
      SET $TESORO_MORO = 1
      SET TILE (11, 2) = 0
      EXTERN 66
      SOUND 6
      SOUND 6
      SOUND 6
      SOUND 6
      SOUND 6
      EXTERN 67
   END
END

# Talismán 4!

ENTERING SCREEN 15
   IF $TALISMAN_4 = 0
   THEN
      SET TILE (8, 8) = 17
      SET_FIRE_ZONE_TILES 8, 8, 8, 8
      EXTERN 50
   END
END

PRESS_FIRE AT SCREEN 15
   IF $TALISMAN_4 = 0
   IF PLAYER_TOUCHES 8, 8
   THEN
      SET $CROSSES = 0
      SET $TALISMAN_4 = 1
      INC $TALISMAN_PIECES, 1
      # SHOW_COINS
      DECORATIONS
         1, 2, 13
         2, 2, 13
         3, 2, 13
         4, 2, 13
         8, 3, 13
         9, 3, 13
         10, 3, 13
         11, 3, 13
         12, 3, 13
         13, 3, 13
         1, 5, 13
         2, 5, 13
         3, 5, 13
         8, 6, 13
         9, 6, 13
         10, 6, 13
         2, 7, 13
         4, 7, 13
         6, 7, 13
         12, 7, 13
      END
      # Close gate, remove object
      SET TILE (14, 7) = 16
      SET $GATE_X = 14
      SET $GATE_Y = 7
      SET TILE (8, 8) = 0
      SHOW
      # ENABLE_TYPE_6
      SET $MURCIELAGO_ON = 1
      SOUND 6

      # This now delegates on PLAYER_GETS_COIN! see above.
   END
END

# Talismán 3!

ENTERING SCREEN 22
   IF $TALISMAN_3 = 0
   THEN
      SET TILE (7, 8) = 17
      SET_FIRE_ZONE_TILES 7, 8, 7, 8
      EXTERN 50
   END
END

PRESS_FIRE AT SCREEN 22
   IF $TALISMAN_3 = 0
   IF PLAYER_TOUCHES 7, 8
   THEN
      SET $CROSSES = 0
      SET $TALISMAN_3 = 1
      INC $TALISMAN_PIECES, 1
      # SHOW_COINS
      DECORATIONS
         7, 2, 13
         8, 2, 13
         9, 2, 13
         10, 2, 13
         11, 2, 13
         12, 2, 13
         13, 2, 13
         1, 4, 13
         2, 4, 13
         3, 4, 13
         4, 4, 13
         7, 6, 13
         8, 6, 13
         9, 6, 13
         10, 6, 13
         11, 6, 13
         12, 6, 13
         13, 6, 13
         2, 7, 13
         4, 7, 13
      END
      # Close gate, remove object
      SET TILE (0, 2) = 16
      SET $GATE_X = 0
      SET $GATE_Y = 2
      SET TILE (7, 8) = 0
      SHOW
      # ENABLE_TYPE_6
      SET $MURCIELAGO_ON = 1
      SOUND 6

      # This now delegates on PLAYER_GETS_COIN! see above.
   END
END

# Talismán 1!

ENTERING SCREEN 23
   IF $TALISMAN_1 = 0
   THEN
      SET TILE (12, 4) = 17
      SET_FIRE_ZONE_TILES 12, 4, 12, 4
      EXTERN 50
   END
END

PRESS_FIRE AT SCREEN 23
   IF $TALISMAN_1 = 0
   IF PLAYER_TOUCHES 12, 4
   THEN
      SET $CROSSES = 0
      SET $TALISMAN_1 = 1
      INC $TALISMAN_PIECES, 1
      # SHOW_COINS
      DECORATIONS
         1, 2, 13
         2, 2, 13
         3, 2, 13
         1, 3, 13
         2, 3, 13
         3, 3, 13
         1, 4, 13
         2, 4, 13
         3, 4, 13
         1, 5, 13
         2, 5, 13
         3, 5, 13
         1, 6, 13
         2, 6, 13
         3, 6, 13
         9, 8, 13
         10, 8, 13
         11, 8, 13
         12, 8, 13
         13, 8, 13
      END
      # Close gate, remove object
      SET TILE (14, 2) = 16
      SET $GATE_X = 14
      SET $GATE_Y = 2
      SET TILE (12, 4) = 0
      SHOW
      # ENABLE_TYPE_6
      SET $MURCIELAGO_ON = 1
      SOUND 6

      # This now delegates on PLAYER_GETS_COIN! see above.
   END
END

# Talisman #2!

ENTERING SCREEN 27
   IF $TALISMAN_2 = 0
   THEN
      SET TILE (3, 2) = 17
      SET_FIRE_ZONE_TILES 3, 2, 3, 2
      EXTERN 50
   END
END

PRESS_FIRE AT SCREEN 27
   IF $TALISMAN_2 = 0
   IF PLAYER_TOUCHES 3, 2
   THEN
      SET $CROSSES = 0
      SET $TALISMAN_2 = 1
      INC $TALISMAN_PIECES, 1
      # SHOW_COINS
      DECORATIONS
         9, 2, 13
         10, 2, 13
         11, 2, 13
         12, 2, 13
         13, 2, 13
         1, 3, 13
         2, 3, 13
         1, 4, 13
         2, 4, 13
         4, 4, 13
         5, 4, 13
         6, 4, 13
         7, 4, 13
         1, 5, 13
         2, 5, 13
         9, 6, 13
         10, 6, 13
         11, 6, 13
         12, 6, 13
         13, 6, 13
      END
      # Close gate, remove object
      SET TILE (14, 8) = 16
      SET $GATE_X = 14
      SET $GATE_Y = 8
      SET TILE (3, 2) = 0
      SHOW
      # ENABLE_TYPE_6
      SET $MURCIELAGO_ON = 1
      SOUND 6

      # This now delegates on PLAYER_GETS_COIN! see above.
   END
END

# It's a trap!

ENTERING SCREEN 29
   IF $TRAMPA = 0
   THEN
      SET_FIRE_ZONE_TILES 2, 0, 2, 9
   END
END

PRESS_FIRE AT SCREEN 29
   IF PLAYER_IN_X 17, 47
   IF $TRAMPA = 0
   THEN
      EXTERN 53
      REDRAW
      SET $TRAMPA = 1
      SET $CROSSES = 0
      SET_FIRE_ZONE 0, 0, 0, 0
      # SHOW_COINS
      DECORATIONS
         1, 2, 13
         2, 2, 13
         3, 2, 13
         4, 2, 13
         5, 2, 13
         10, 2, 13
         11, 2, 13
         12, 2, 13
         13, 2, 13
         7, 3, 13
         9, 5, 13
         10, 5, 13
         11, 5, 13
         12, 5, 13
         13, 5, 13
         1, 8, 13
         3, 8, 13
         11, 8, 13
         12, 8, 13
         13, 8, 13
      END
      # Close gate, remove object
      SET TILE (0, 6) = 16
      SET $GATE_X = 0
      SET $GATE_Y = 6
      SHOW
      # ENABLE_TYPE_6
      SET $MURCIELAGO_ON = 1
      SOUND 6

      # This now delegates on PLAYER_GETS_COIN! see above.      
END
Como diría Rorshach: "Urm..."
Avatar de Usuario
miguelo
Mensajes: 3
Registrado: Lun, 07 Mar 2016, 12:07

Re: Propuesta: Manual MK2

Mensajepor miguelo » Dom, 25 Sep 2016, 00:40

He abierto una Wiki pública para que todo el mundo que quiera y pueda colabore para tener un buen manual del framework.
Si la comunidad responde, ¡lo tendremos!

https://github.com/magarciaguerra/mk2/wiki
Avatar de Usuario
miguelo
Mensajes: 3
Registrado: Lun, 07 Mar 2016, 12:07

Re: Propuesta: Manual MK2

Mensajepor miguelo » Dom, 25 Sep 2016, 21:02

Hola a todos :)

El hecho de plantear este proyecto es una forma de devolver a la comunidad todo lo que ha hecho por nosotros, una forma de poder facilitar el trabajo al los Mojon Twins para que, con un poquito de la parte de todos, consigamos una documentación precisa y así ellos no tienen que dedicar a esfuerzos a ello, aunque dijeron que no lo iba a hacer pero buen...,

El caso es que, para una sola persona es una tarea enorme y yo ofrezco mi ayuda desinteresada para llevar a cabo esto.

Si hay contribuyentes para el manual, pues sería genial, lo sacaríamos en poco tiempo pero, si, lamentablemente, no hay nadie, habría que abortar la misión y seguir como hemos estado hasta ahora.

Ya digo, mi ayuda, mi predisposición, es desinteresada y radica en el hecho de poder devolver a la comunidad lo que ésta ha hecho por nosotros.

Tras un día muy intenso en el que mucha gente ha apoyado el proyecto con RTs en Twitter, solo hay una persona que quiere embarcarse en semejante aventura haciendo los trabajos de maquetación del manual en el futuro PDF final.

A ver cómo deriva esto en los próximos días pero si, en caliente, no tenemos todavía gente que contribuya... Quizá me equivoque pero no pinta muy bien.

Tengo confianza, eso sí, en que podremos sacarlo, y será algo muy bueno para la afición. Venga ¿quien se anima?
Última edición por miguelo el Dom, 25 Sep 2016, 21:46, editado 1 vez en total.
Avatar de Usuario
na_th_an
Mensajes: 26408
Registrado: Vie, 09 Ene 2009, 12:18

Re: Propuesta: Manual MK2

Mensajepor na_th_an » Dom, 25 Sep 2016, 21:26

Yo ya te digo que para cualquier duda que surja aquí estamos. Había entendido de tu mensaje original que ibas a elaborar el manual tú.
Como diría Rorshach: "Urm..."
ConsolaViejuna
Mensajes: 6
Registrado: Vie, 08 Abr 2016, 11:34

Re: Propuesta: Manual MK2

Mensajepor ConsolaViejuna » Mar, 27 Sep 2016, 18:41

Buenas tardes Alhajas!
Es una estupenda iniciativa.
La verdad es que no tengo ni idea de cómo se usa MK2, pero se podrían automatizar algunas tareas usando algún programa para gestionar la configuración de un proyecto, tipo maven o gradle, de tal manera que en Eclipse por ejemplo te puedas crear un proyecto base del que puedas tirar, con todas las librerías ya instaladas y funcionando. Se podría automatizar algunas labores, de tal manera que por ejemplo se pueda dar botón derecho al proyecto y probar el juego, generar los script necesarios, etc, pero claro todo esto he de conocer antes cómo funciona MK2 y cómo se trabaja con el para ver que se puede automatizar, una vez empezado el manual me comprometo a investigar para ver cómo se podría hacer.

Salu2
:lol:
errecepe
Mensajes: 17
Registrado: Mar, 25 Ago 2015, 19:54
Contactar:

Re: Propuesta: Manual MK2

Mensajepor errecepe » Mié, 28 Sep 2016, 00:24

Sólo he probado La Churrera, para el desarrollo de un proyecto.

Para el siguiente me gustaría realizarlo sobre MK2.
Pero vamos, que ni idea de por donde empezar, ni de MK2.

No se como podría colaborar, pero, de una manera u otra durante las próximas semanas, tendré que documentarme
y seguir los pasos que vaya deduciendo, etc...

Si se trata de pasar a esa wiki, parte (o todo) del scripting.txt, whatsnew.txt y la info valiosa que exista por el foro... copipegando,
alguna hora nocturna le podría dedicar.


Cualquier cosa, ya me vas diciendo.
@errecepe

Volver a “MK2”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados