Llenguatge puppetml

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Introducció

El llenguatge puppetml té per objectiu descriure totes les accions que van succeïnt quan s'explica un conte. És a dir, és el guió. L'arrel és la història que es vol explicar, que està dividida en actes. En cada acte hi ha una successió d'accions en les quals els personatges fan una sèrie d'accions: caminen, parlen, mouen el cap,...

Aquesta especificació XML, inventada per mi però sense mirar si s'havia fet res semblant en aquest àmbit, ha de donar suport a l'objectiu de poder explicar un conte amb suport audiovisual, i com a guió sobre el qual els diferents efectes musicals van succeïnt. Per exemple, a cada acte li puc associar un instrument (Change Program), una melodia,...

Evidentment el llenguatge JAVA sap llegir fitxers XML.

Teoria de XML

http://www.w3schools.com/xml/xml_attributes.asp

A mi m'interessa bàsicament, a l'hora de definir una especificació per al meu llenguatge PuppetML, quina informació anirà amb atributs i quina amb elements. Per exemple,

<note date="12/11/2007">
  <to>Tove</to>
  <from>Jani</from>
</note>

Diferència conceptual entre element i atribut: els atributs sovint proporcionen informació que no és part de les dades. En el següent cas, el format del fitxer és irrelevant per a la informació, però és important per al software que haurà de carregar la imatge.

<file type="gif">computer.gif</file> 

Així doncs, aquesta és la idea: separar la informació de la metainformació. No hi ha regles de quan s'ha d'utilitzar elements o atributs. Moltes vegades s'utilitza una referència id per identificar els elements. En aquest cas s'utilitzen atributs:

<messages>
  <note id="501">
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
  </note> 
</messages>

Especificacions

he canviat de Java a C++. Per parsejar un fitxer XML utilitzaré la llibreria TinyXML. El projecte ja està més madur (gener 2012). S'utilitzarà un client JACK per a la part musical, i SDL com a llibreria gràfica. Falta fer un conjunt de classes amb C++ que doni suport a tota l'estructura de les accions que van passant.

Exemple

Ara ja puc ficar informació temporal a les accions. Falta determinar les unitats (pot ser ticks, frames, núm de compàs, segons,...)

<?xml version="1.0" encoding="UTF-8"?>
<puppet_tale>
	<title>El Joan Petit com balla</title>
	<credits>
		<script>Joan Quintana Compte</script>
		<artwork />
		<thanks_to />
		<music />
	</credits>
	
	<landscapes>
		<landscape id="1" img="landscape1.png" />
	</landscapes>
	
	<characters>
		<character id="1" img="joan.png">
			<name>Joan</name>
			<parts>
				<part id="llavis">
					<fitxers>
						<fitxer src="llavi1.png" />
						<fitxer src="llavi2.png" />
					</fitxers>
					<posx>20</posx>
					<posy>20</posy>
				</part>
				<part id="ulls">
					<fitxers>
						<fitxer src="ull1.png" />
						<fitxer src="ull2.png" />
					</fitxers>
					<posx>10</posx>
					<posy>10</posy>
				</part>
				<part id="braç1">
					<fitxers>
						<fitxer src="braç11.png" />
						<fitxer src="braç12.png" />
					</fitxers>
					<posx>0</posx>
					<posy>10</posy>
				</part>
				<part id="braç2">
					<fitxers>
						<fitxer src="braç21.png" />
						<fitxer src="braç22.png" />
					</fitxers>
					<posx>40</posx>
					<posy>10</posy>
				</part>
				<part id="cama1">
					<fitxers>
						<fitxer src="cama11.png" />
						<fitxer src="cama12.png" />
					</fitxers>
					<posx>0</posx>
					<posy>30</posy>
				</part>
				<part id="cama2">
					<fitxers>
						<fitxer src="cama21.png" />
						<fitxer src="cama22.png" />
					</fitxers>
					<posx>40</posx>
					<posy>10</posy>
				</part>
			</parts>
		</character>
		<character id="2" img="dit.png">
			<name>dit</name>
		</character>
		<character id="3" img="ma.png">
			<name>mà</name>
		</character>
		<character id="4" img="peu.png">
			<name>peu</name>
		</character>
	</characters>

	<acts> <!-- Comença l'acció -->
		<act id="1" name="acte #1">
			<landscape id="1" visible="1" moviment="1">
				<velx>10</velx>
				<vely>0</vely>
			</landscape>
			<actions> <!-- defineixo les accions que passaran en el acte. Aquí és on he de considerar en quin temps passen les accions -->
				<action id="1" name="intro" t="0" >
					<text>El Joan Petit quan balla..., balla, balla, balla. El Joan Petit quan balla..., balla amb el... </text>
					<characters> <!-- definició i comportament dels actes que passen en l'acció -->
						<character id="1" visible="1" >
							<velx>0</velx>
							<vely>0</vely>
							<parts>
								<part id="llavis" visible="1" moviment="1"></part>
								<part id="ulls" visible="1" moviment="1"></part>
								<part id="braç1" visible="1" moviment="1"></part>
								<part id="braç2" visible="1" moviment="1"></part>
								<part id="cama1" visible="1" moviment="1"></part>
								<part id="cama2" visible="1" moviment="1"></part>
							</parts>
						</character>
					</characters>
				</action>
				<action id="2" name="el dit" t="10" >
					<text>DIT. Amb el dit, dit, dit..., ara balla el Joan Petit. El</text>
					<characters>
						<character id="2" visible="1"></character>
					</characters>
				</action>
				<action id="3" name="intro" t="20">
					<text>Joan Petit quan balla..., balla, balla, balla. El Joan Petit quan balla..., balla amb la... </text>
					<characters>
						<character id="2" visible="0"></character>
					</characters>
				</action name="la">
				<action id="4" t="30" >
					<text>MÀ. Amb la mà, mà, mà... Amb el </text>
					<characters>
						<character id="3" visible="1"></character>
					</characters>
				</action>
				<action id="5" name="el dit" t="40" >
					<text>dit, dit, dit... Ara</text>
					<characters>
						<character id="3" visible="0"></character>
						<character id="2" visible="1"></character>
					</characters>
				</action>
				<action id="6" name="intro" t="50">
					<text>balla el Joan Petit. El</text>
					<characters>
						<character id="2" visible="0"></character>
					</characters>
				</action>
				<action id="7" name="intro" t="60">
					<text>Joan Petit quan balla..., balla, balla, balla. El Joan Petit quan balla..., balla amb el... </text>
				</action>
				<action id="8" name="el peu" t="70" >
					<text>PEU. Amb la peu, peu, peu... Amb la</text>
					<characters>
						<character id="4" visible="1"></character>
					</characters>
				</action>
				<action id="8" name="la mà" t="80">
					<text>mà, mà, mà. Amb el</text>
					<characters>
						<character id="4" visible="0"></character>
						<character id="3" visible="1"></character>
					</characters>
				</action>
				<action id="9" name="el dit" t="90">
					<text>dit, dit, dit... Ara</text>
					<characters>
						<character id="3" visible="0"></character>
						<character id="2" visible="1"></character>
					</characters>
				</action>
				<action id="10" name="intro" t="100" >
					<text>balla el Joan Petit</text>
					<characters>
						<character id="2" visible="0"></character>
					</characters>
				</action>
			</actions>
		</act>
	</acts>
</puppet_tale>

Aclaracions

En un documnet puppetml hi ha informació visual i informació musical. De moment només treballo la part visual

Nota important: el document puppetml em defineix la posada a punt d'un paisatge i unes accions bàsiques definides en el document. Sobre aquestes accions bàsiques es superposarà la lògica del programa, que estarà dins el codi Java.

Primer de tot defineixo els landscapes i els characters que hi haurà en el document, i que carrego en memòria.

a characters no he de definir ni posicions ni moviments. La única cosa que he de fer és definir els characters i parts que tinc per poder carregar-les, i la posició relativa de la part dins el caràcter.


-parsejo el document

-escric el títol i els crèdits

for landscapes ...

next

for characters ...

next

for acts ...

  pinto el landscape
  for actions ...
     pinto el text
     actualitzo els caràcters
  next

next


creat per Joan Quintana Compte, abril 2009

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines