Omnitotem
-
- PaC-DK Newby
- Posts: 14
- Joined: 05 Mar 2015, 17:19
- Location: Ukraine
Omnitotem
ich hab im Leben nur LUA Text-adventures geschrieben, noch nie mit Grafik (vielleicht weil ich mich mit Malen nichts zu tun habe).
Jetzt will ich probieren aus den fertigen pics Animationen zu basteln um meine Horror-idee in ein Spiel zu schaffen. Das Spiel wird sehr unheimlich und gruselig sein (aber ohne Zombies und andere US cliches). So etwas wie Dark Seed mit Cronenberg und Laird Barron.
Jetzt mache ich Szene-designs, und lerne gerade die neue Beta 4. Zur Zeit heißt das Projekt "Omnitotem: Dark Sanity".
Also, hier, zum Beispiel, habe ich denselben Raum, aber ich möchte was besonderes mit Fenstern und Licht arrangieren. Wie kann ich ein Video im Fensterfläche platzieren? Ich hab das im Help oder Tutorials nicht gefunden. Soll ich einfach eine Reihe pics in ein Objekt zusammenfassen, oder läßt sich einfach ein Videofile an die Stelle bringen? Na sagen wir, daß es ein Video hinter im Fenster abspielt, mit entsprechenden Lichtflecken am Boden (die sind nicht ein Video, natürlich, sondern pic Animation). Kann ich das tun, mit dem Video da?
Jetzt will ich probieren aus den fertigen pics Animationen zu basteln um meine Horror-idee in ein Spiel zu schaffen. Das Spiel wird sehr unheimlich und gruselig sein (aber ohne Zombies und andere US cliches). So etwas wie Dark Seed mit Cronenberg und Laird Barron.
Jetzt mache ich Szene-designs, und lerne gerade die neue Beta 4. Zur Zeit heißt das Projekt "Omnitotem: Dark Sanity".
Also, hier, zum Beispiel, habe ich denselben Raum, aber ich möchte was besonderes mit Fenstern und Licht arrangieren. Wie kann ich ein Video im Fensterfläche platzieren? Ich hab das im Help oder Tutorials nicht gefunden. Soll ich einfach eine Reihe pics in ein Objekt zusammenfassen, oder läßt sich einfach ein Videofile an die Stelle bringen? Na sagen wir, daß es ein Video hinter im Fenster abspielt, mit entsprechenden Lichtflecken am Boden (die sind nicht ein Video, natürlich, sondern pic Animation). Kann ich das tun, mit dem Video da?
Re: Omnitotem
Viele Bilder in ein Objekt packen wäre eine Möglichkeit. Für kurze Videos mit deutlich mehr als 30 Bildern gibt es den Befehl playanimation. In der Anleitung steht genau drin wie das geht.
Im Prinzip packst du deinen Kurzfilm in einzelnen Frames ins Projekt und achtest drauf das sie alle nummeriert sind zB :
myvideo001.jpg
myvideo002.jpg
myvideo003.jpg
myvideo004.jpg
Im playanimation Befehl gibst du dann nur myvideo an, sowie Postion, Größe und Geschwindigkeit.
Im Prinzip packst du deinen Kurzfilm in einzelnen Frames ins Projekt und achtest drauf das sie alle nummeriert sind zB :
myvideo001.jpg
myvideo002.jpg
myvideo003.jpg
myvideo004.jpg
Im playanimation Befehl gibst du dann nur myvideo an, sowie Postion, Größe und Geschwindigkeit.
-
- PaC-DK Newby
- Posts: 14
- Joined: 05 Mar 2015, 17:19
- Location: Ukraine
Re: Omnitotem
ja, danke, aber kann ich diese Animation HINTER das Raum platzieren, so wie in einem hinteren Layer? Zum Beispiel in Rahmen Fensters oder eines TV Funkgerätes? Oder soll ich darüber kümmern erst wenn ich die Animation bastle und dann das ganze als ein fertiges Objekt an die Szene platzieren?
Re: Omnitotem
Hi,
ich hab das so, wie ben beschrieben noch nie ausprobiert, aber wenn es Objektbasiert ist, dann müsste es ja möglich sein, das "Filmobjekt" HINTER die Wand zu setzen, bzw die Wand als Mitte zu definieren.
Dazu hat jedes Objekt einen Regler, damit kann man bestimmen, ob z.B. eine Figur davor, dahinter, wann davor und dahinter laufen kann oder ob ein Objekt im Vorder- oder Hintergrund steht.
Wenn also die Wand auf "Mitte" steht und der Film auf "hinten", dann steht die Wand mit dem Fenster ( das muss dan ein PNG File sein, damit das Fenster "leer" bleibt, also ohne Hintergrund ( eben ein Loch in der Wand ! ) und dahinter läuft der Film ab, also ist auch nur durch das Fenster der FIlm zu sehen, den Rest verdeckt die Wand
Gruß
Manni
ich hab das so, wie ben beschrieben noch nie ausprobiert, aber wenn es Objektbasiert ist, dann müsste es ja möglich sein, das "Filmobjekt" HINTER die Wand zu setzen, bzw die Wand als Mitte zu definieren.
Dazu hat jedes Objekt einen Regler, damit kann man bestimmen, ob z.B. eine Figur davor, dahinter, wann davor und dahinter laufen kann oder ob ein Objekt im Vorder- oder Hintergrund steht.
Wenn also die Wand auf "Mitte" steht und der Film auf "hinten", dann steht die Wand mit dem Fenster ( das muss dan ein PNG File sein, damit das Fenster "leer" bleibt, also ohne Hintergrund ( eben ein Loch in der Wand ! ) und dahinter läuft der Film ab, also ist auch nur durch das Fenster der FIlm zu sehen, den Rest verdeckt die Wand
Gruß
Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
-
- Experienced PaC-DK User
- Posts: 561
- Joined: 07 Sep 2011, 21:33
- Location: In der Ortenau
- Contact:
Re: Omnitotem
Dafür musste halt den Hintergrund nicht als Hintergrund, sondern als Objekt einfügen. Damit du hinter ihm noch etwas platzieren kannst.
Re: Omnitotem
Nein, eine Animation mit Playanimation ist immer im Vordergrund und recht eckig. Macht aber nichts, du brauchst ja nur den Ausschnitt des Fensters nehmen und vor deinen Film packen, so hab ichs in Alühn 2 gemacht mit der Portaltür.
-
- PaC-DK Newby
- Posts: 14
- Joined: 05 Mar 2015, 17:19
- Location: Ukraine
Re: Omnitotem
vielen Dank, jetzt hab' ich das verstanden
-
- PaC-DK Newby
- Posts: 14
- Joined: 05 Mar 2015, 17:19
- Location: Ukraine
Re: Omnitotem
Okay, ich bin jetzt grad am Voice recording un hab ein Paar Fragen.
1. Wie kann ich ein Cycle machen so dass der Soundfile der sich abspielt ist nicht der einzelne, sondern ich hab eine Reihe von Files die sich der Reihe nach abspielen (für demselben State), so wie ein Loop von Sound Files. Z.B. 001.ogg, 002.ogg, 003.ogg - und dann noch mal wieder von Anfang an 001.ogg usw.
2. In Version 3 kann ich schon die animierte GIFS verwenden? Und wie verwende ich die MP4 Videos, wie kann ich die abspielen? ZB, in meinem Spiel hab´ ich einen TV in jedem Room, und am TV möchte ich MP4 abspielen. Wie komme ich dazu?
Vielen Dank!
1. Wie kann ich ein Cycle machen so dass der Soundfile der sich abspielt ist nicht der einzelne, sondern ich hab eine Reihe von Files die sich der Reihe nach abspielen (für demselben State), so wie ein Loop von Sound Files. Z.B. 001.ogg, 002.ogg, 003.ogg - und dann noch mal wieder von Anfang an 001.ogg usw.
2. In Version 3 kann ich schon die animierte GIFS verwenden? Und wie verwende ich die MP4 Videos, wie kann ich die abspielen? ZB, in meinem Spiel hab´ ich einen TV in jedem Room, und am TV möchte ich MP4 abspielen. Wie komme ich dazu?
Vielen Dank!
Re: Omnitotem
Hi,
wenn Du eine Playlist abspielen willst, dann nutze Stringvariablen, in die Du den Namen des abzuspielenden Files reinschreibst. Dann schreibst Du eine Funktion, die einen Zähler abfragt und dann entsprechend die Variable neu setzt.
z.B.
ifnot_obj (music_timer;0) ---> soll Sound abgepsielt werden ?
{
ifnot_num (music_counter;10) ---> wurde das letzte Stück schon gespielt ?
setnum (music_counter;+1) ---> wenn nicht, dann Zähler +1
if_num (music_counter;>9)
setnum (music_counter;0) ---> wenn es von Vorne anfangen soll
playsound ([current_soundfile])
setobj (music_timer;<Zustand für Geschwindigkeit>)
}
Im letzten Frame des Objektes music_timer steht dann der Aufruf der Funktion
Wenn das Objekt music_timer auf 0 steht, wird die Funktion nicht mehr ausgeführt.
Gruß
Manni
wenn Du eine Playlist abspielen willst, dann nutze Stringvariablen, in die Du den Namen des abzuspielenden Files reinschreibst. Dann schreibst Du eine Funktion, die einen Zähler abfragt und dann entsprechend die Variable neu setzt.
z.B.
ifnot_obj (music_timer;0) ---> soll Sound abgepsielt werden ?
{
ifnot_num (music_counter;10) ---> wurde das letzte Stück schon gespielt ?
setnum (music_counter;+1) ---> wenn nicht, dann Zähler +1
if_num (music_counter;>9)
setnum (music_counter;0) ---> wenn es von Vorne anfangen soll
playsound ([current_soundfile])
setobj (music_timer;<Zustand für Geschwindigkeit>)
}
Im letzten Frame des Objektes music_timer steht dann der Aufruf der Funktion
Wenn das Objekt music_timer auf 0 steht, wird die Funktion nicht mehr ausgeführt.
Gruß
Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
-
- PaC-DK Newby
- Posts: 14
- Joined: 05 Mar 2015, 17:19
- Location: Ukraine
Re: Omnitotem
Danke, was aber bedeutet <Zustand für Geschwindigkeit>, soll da was besonderes stehen?
Re: Omnitotem
Zustand bedeutet : Zustand des Objektes, das als Timer fungiert.
setobj (Ampel;1 ) Zeigt z-B das Bild einer grünen Ampel
setobj ( Ampel;2) Zeigt z.B das Bild einer roten Ampel.
Das Objekt Ampel hat also 2 Zustände. Wenn Du alle 30 Frames je Zustand ablaufen lässt und Skriptzeilen in die Frames einträgst, werden diese Befehle eben erst mit Ablaufen des jeweiligen Bildes / Frames aktiv. Je nachdem, wie schnell die 30 Bilder in Zustand 1 und 2 ablaufen sollen, endet der Timer dann eben mal schneller oder mal langsamer.
Nur, dass ich als Timerobjekt eben normalerweise KEINE Grafiken einfüge ( Außer in der Entwicklungsphase des Spiels )
Zustand 1 kann ich z.B. einstellen auf 1 Bild pro Sekunde. Zustand 2 auf 5 Bilder / Sek usw.
Wenn ich jetzt einen langsamen Timer brauche, wähle ich Zustand 1, nach 30 Bildern / Frames ( = 30 Sek ) wird dann die Skriptzeile in Frame 30 ausgeführt und die Funktion startet dann das Timerobjekt mit der benötigten neuen Geschwindigkeit / Zustand neu.
Da Timerobjekt ist also sowas , wie eine Eieruhr, die Du aufziehst und die nach der eingestellten Zeit dann rappelt. Das verbraucht keine Rechenzeit für Funktionen und es hat sich als sinnvoll erwiesen, wenn ich sehen möchte, ob der Timer auch läuft. ( Habe dann eine kleine Uhr als Bild gesetzt im Anywhere Raum )
Alles klar ?
Gruß
Manni
setobj (Ampel;1 ) Zeigt z-B das Bild einer grünen Ampel
setobj ( Ampel;2) Zeigt z.B das Bild einer roten Ampel.
Das Objekt Ampel hat also 2 Zustände. Wenn Du alle 30 Frames je Zustand ablaufen lässt und Skriptzeilen in die Frames einträgst, werden diese Befehle eben erst mit Ablaufen des jeweiligen Bildes / Frames aktiv. Je nachdem, wie schnell die 30 Bilder in Zustand 1 und 2 ablaufen sollen, endet der Timer dann eben mal schneller oder mal langsamer.
Nur, dass ich als Timerobjekt eben normalerweise KEINE Grafiken einfüge ( Außer in der Entwicklungsphase des Spiels )
Zustand 1 kann ich z.B. einstellen auf 1 Bild pro Sekunde. Zustand 2 auf 5 Bilder / Sek usw.
Wenn ich jetzt einen langsamen Timer brauche, wähle ich Zustand 1, nach 30 Bildern / Frames ( = 30 Sek ) wird dann die Skriptzeile in Frame 30 ausgeführt und die Funktion startet dann das Timerobjekt mit der benötigten neuen Geschwindigkeit / Zustand neu.
Da Timerobjekt ist also sowas , wie eine Eieruhr, die Du aufziehst und die nach der eingestellten Zeit dann rappelt. Das verbraucht keine Rechenzeit für Funktionen und es hat sich als sinnvoll erwiesen, wenn ich sehen möchte, ob der Timer auch läuft. ( Habe dann eine kleine Uhr als Bild gesetzt im Anywhere Raum )
Alles klar ?
Gruß
Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
-
- PaC-DK Newby
- Posts: 14
- Joined: 05 Mar 2015, 17:19
- Location: Ukraine
Re: Omnitotem
Danke! Ich brauche nach jedem Click auf einen Objekt einen nächsten Sound abzuspielen aus einer Liste von Files, und diese Liste wiederholt sich in einem Loop. Ich könnte natürlich einfach den State des Objektes wechseln nach jedem Click, aber vielleicht gibt es bessere Wege?
Re: Omnitotem
Ach, du willst das per Click machen ??
Das ist ja noch viel einfacher... Meine Variante würde eine Playlist abspielen...
Dann rufst Du die Funktion per on (click) auf und vergisst mal die Objekte.
In die Funktion solltest Du dann aber als erstes einen stopsound Befehl schreiben, um evtl noch laufende Sounds zu beenden. Du musst dann noch eine Liste erstellen, in der die Sounds den Zählern zugeordnet sind.
on (click)
{
stopsound ([current_soundfile])
if_num (music_counter;<10) ---> wurde das letzte Stück schon gespielt ?
setnum (music_counter;+1) ---> wenn nicht, dann Zähler +1
if_num (music_counter;10)
setnum (music_counter;0) ---> wenn es von Vorne anfangen soll
if_num (music_counter;1)
setstring (current_soundfile;sound_1.ogg)
if_num (music_counter;2)
setstring (current_soundfile;sound_2.ogg)
if_num (music_counter;3)
setstring (current_soundfile;sound_3.ogg)
if_num (music_counter;4)
setstring (current_soundfile;sound_4.ogg)
usw...
playsound ([current_soundfile])
}
Du kannst natürlich auch statt der Stringvariablen current_soundfile gleich die Namen und den playsound Befehl einsetzen, dann must Du aber für den Stopsound Befehl die Liste auch nochmal schreiben.
Gruß
Manni
Das ist ja noch viel einfacher... Meine Variante würde eine Playlist abspielen...
Dann rufst Du die Funktion per on (click) auf und vergisst mal die Objekte.
In die Funktion solltest Du dann aber als erstes einen stopsound Befehl schreiben, um evtl noch laufende Sounds zu beenden. Du musst dann noch eine Liste erstellen, in der die Sounds den Zählern zugeordnet sind.
on (click)
{
stopsound ([current_soundfile])
if_num (music_counter;<10) ---> wurde das letzte Stück schon gespielt ?
setnum (music_counter;+1) ---> wenn nicht, dann Zähler +1
if_num (music_counter;10)
setnum (music_counter;0) ---> wenn es von Vorne anfangen soll
if_num (music_counter;1)
setstring (current_soundfile;sound_1.ogg)
if_num (music_counter;2)
setstring (current_soundfile;sound_2.ogg)
if_num (music_counter;3)
setstring (current_soundfile;sound_3.ogg)
if_num (music_counter;4)
setstring (current_soundfile;sound_4.ogg)
usw...
playsound ([current_soundfile])
}
Du kannst natürlich auch statt der Stringvariablen current_soundfile gleich die Namen und den playsound Befehl einsetzen, dann must Du aber für den Stopsound Befehl die Liste auch nochmal schreiben.
Gruß
Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
-
- PaC-DK Newby
- Posts: 14
- Joined: 05 Mar 2015, 17:19
- Location: Ukraine
Re: Omnitotem
Vielen Dank!
-
- PaC-DK Newby
- Posts: 14
- Joined: 05 Mar 2015, 17:19
- Location: Ukraine
Re: Omnitotem
Noch mal eine Kleinigkeit bezüglich Syntax zu erklären: wie füge ich if-then-loop innen eines existierenden if-loops (also, nested ´if´ loop) ein? ZB ich möchte für jeden State des Objektes den obengenannten Code einsetzen, d.h. für jeden State des Objektes soll es eine um eine andere Liste von Sounds handeln.
In LUA muß ich ´end´ am Ende jedes ´if-then´Loops platzieren.
Soll ich einfach mehrere ´if-then´ loops mitten einander stellen, ohne irgenwelchen End-syntax?
In LUA muß ich ´end´ am Ende jedes ´if-then´Loops platzieren.
Soll ich einfach mehrere ´if-then´ loops mitten einander stellen, ohne irgenwelchen End-syntax?
Re: Omnitotem
Schon mal den Abschnitt über geschweifte Klammern gelesen ??
on (click )
{
if_obj ( ampel;1)
{
if_obj (knopf;2)
{
setobj (knopf;1)
setobj (ampel;2)
break()
}
if_obj (knopf;1)
function ( do_nothing )
}
}
If / Then gibt es übrigens ( syntaxmäßig ) nicht bei uns. Es gibt nur If...
Gruß
Manni
on (click )
{
if_obj ( ampel;1)
{
if_obj (knopf;2)
{
setobj (knopf;1)
setobj (ampel;2)
break()
}
if_obj (knopf;1)
function ( do_nothing )
}
}
If / Then gibt es übrigens ( syntaxmäßig ) nicht bei uns. Es gibt nur If...
Gruß
Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
-
- PaC-DK Newby
- Posts: 14
- Joined: 05 Mar 2015, 17:19
- Location: Ukraine
Re: Omnitotem
Haha, ja, tschuldigung, es fiel mir so schwer diese verdammte Grafik und Sprites zusammenzubasteln daß ich hab bloß den eigentlichen Code für später verschoben, aber jetzt ist schon (endlich!) gerade die Zeit die Docs zu lesen!Schon mal den Abschnitt über geschweifte Klammern gelesen ??
heh, aber jetzt sehe ich daß es ´break ()´ doch noch gibt!Es gibt nur If...
Danke, das war sehr hilfreich denn ich hab LUA auch so chaotisch gelernt!i Ich schäme mich...
Re: Omnitotem
"ich schäme mich"...
joa, ist ein Anfang...
Aber Du weißt ja ... wer ohne Schuld ist, der werfe das erste Schwein....
war doch so, oder ??
Bei uns auf´m Land....
Das break ist in If Scripts schon wichtig. Da ja eine erfüllte Bedingung direkt nach einem If steht, wäre das ja nur eine Zeile.
Will man mehrere Zeilen ausführen, muss das in geschweifte Klammern. Damit dann die Abfrage dann aber auch wirklich aufhört und nicht mit dem "quasi-else" Teil weitergeht.
Gruß
Manni
joa, ist ein Anfang...
Aber Du weißt ja ... wer ohne Schuld ist, der werfe das erste Schwein....
war doch so, oder ??
Bei uns auf´m Land....
Das break ist in If Scripts schon wichtig. Da ja eine erfüllte Bedingung direkt nach einem If steht, wäre das ja nur eine Zeile.
Will man mehrere Zeilen ausführen, muss das in geschweifte Klammern. Damit dann die Abfrage dann aber auch wirklich aufhört und nicht mit dem "quasi-else" Teil weitergeht.
Gruß
Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
-
- PaC-DK Newby
- Posts: 14
- Joined: 05 Mar 2015, 17:19
- Location: Ukraine
Re: Omnitotem
Ich hab im Spiel so einen total bescheuerten Kommentator, der muß manchmal was zum Spiel aussagen, wobei er aus der unteren rechten Ecke so reinschlitzt. Er sagt was und dann wieder sich nach rechts unten rausschiebt. (Vielleicht in bißchen kleiner wird er auch aufm Bildschirm.)
Wie soll ich besser diese Prozedur einstellen? Einen State und eine neue Animation für jede aussage? Wie viele States überhaupt kann ein Sprite haben?
Wie soll ich besser diese Prozedur einstellen? Einen State und eine neue Animation für jede aussage? Wie viele States überhaupt kann ein Sprite haben?
Re: Omnitotem
Ähh...Sprites sind - genau, wie Bobs - hier nicht relevant.
Und wenn Du meine Erklärungen gelesen hast, müsste daraus hervorgehen, wie man mit Objekten umgeht und wieviele Zustände sie haben können.
1 Objekt kann 10 Zustände haben, jeder davon kann mit bis zu 30 Grafiken gefüllt und animiert werden.
Wo aktuell die Objektgrenze liegt, weiß ich nicht mehr, glaube , es war mal bei ca 2000 Objekten, kann aber auch höher sein heute...
Gruß
Manni
Und wenn Du meine Erklärungen gelesen hast, müsste daraus hervorgehen, wie man mit Objekten umgeht und wieviele Zustände sie haben können.
1 Objekt kann 10 Zustände haben, jeder davon kann mit bis zu 30 Grafiken gefüllt und animiert werden.
Wo aktuell die Objektgrenze liegt, weiß ich nicht mehr, glaube , es war mal bei ca 2000 Objekten, kann aber auch höher sein heute...
Gruß
Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de