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: 26413
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 431 veces
Como diría Rorshach: "Urm..."
Avatar de Usuario
na_th_an
Mensajes: 26413
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:

$this->bbcode_second_pass_code('', '# 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: 26413
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 1 invitado