Testen

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
rumpel
PaC-DK Newby
Posts: 11
Joined: 14 May 2012, 21:34

Testen

Post: # 78949Post rumpel
14 May 2012, 22:07

Hallo Leute!

Ich bin neu hier und freue mich, dass es um dieses kleine aber feine programm eine aktive gemeinde gibt!
Hut ab, der Editor ist trotz kleiner Macken und Mängel (UNDO-TASTE!!!) ein ausgesprochen mächtiges Tool.

Ich arbeite gerade an einem Adventure für den Deutschunterricht. Das Spiel wird von Tag zu Tag komplexer
und größer... deswegen wüsste ich gerne von euch, welche die und effektivste beste art und weise ist, das Spiel (mitsamt
Intro-Cutscenes) an einer beliebigen Stelle zu starten ohne jedes mal alles von vorne anschauen/spielen zu müssen?

Und eine andere noob-frage:
ich möchte an einer Stelle eine Türsprechanlage einbauen, durch die der Hauptcharakter mit einem anderen Charakter
spricht. Ist es besser bzw. möglich, die Türsprechanlage anstatt als Objekt als einen Charakter zu "bauen"?

Liebe Grüße und danke im Voraus für eventuelle Antworten!
Rumpel

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Testen

Post: # 78950Post japanhonk
15 May 2012, 05:55

Hallo und herzlich Willkommen in unserer Runde.

Was meinst Du mit der Undo Taste ? Ich selbst hätte mir gewünscht, dass Sie zwei oder drei Schritte mehr zurückgehen kann...meinst Du das ?
Zu deinen Fragen :

Starten wird das Spiel immer in dem von Dir festgelegten Raum.
aber von dort aus kannst Du im Prinzip beliebig durch deine Räume
springen.
Du kannst z.B Räume per Tastendruck oder Menüsteuerung laden,
Du kannst auch , wenn sich bestimmte Characktere in den Räumen befinden, per setfocus (...) direkt zu Diesen springen.
Eine der einfachsten Lösungen : Spielstand laden !

z.B. per Savegame (1) den Spielstand vorm Beenden automatisch
abspeichern und am Spielbeginn anbieten, dann den Slot wieder zu
laden und das Spiel fortzusetzen.
Das könnte dann in der einfachsten Weise so aussehen :

if_keydown (L)
loadgame (1)

Wo Du diesen Befehl hinpackst, bleibt dir überlassen.
Eine Möglichkeit wäre das Hauptskript, da das IMMER mitläuft.
So kann man überall im Spiel per Druck auf L den Spielstand laden.
(ggf noch eine Sicherheitsabfrage vorschalten )

Zweite Frage :

Character können auch aus Objekten bestehen. Dem Editor ist es egal,
welche Grafiken im Fenster stehen.
Aber in deinem Fall sehe ich darin nicht so recht den Sinn.
Ein Objekt ( z.B. Telefon ) kann die gleichen Skripte auslösen und
ist im Raum besser zu platzieren und zu kontrollieren ( Vorne, Mitte,
Hinten platzieren z.B.)
Nur Zoomen kann ein Objekt nicht, was in deinem Falle wohl nicht
nötig ist.
Das Objekt kann ja ausserdem bis zu 10 unterschiedliche Zustände haben. Somit kannst Du z.B. durch Umschalten des Zustandes
auch kenntlich machen, ob es schon benutzt wurde :

If _obj (Sprechanlage;1)
{
cutscene (irgendwas)
setobj (sprechanlage;2)
break()
}
If _obj (Sprechanlage;2)
{
speech (self;das brauche ich nicht mehr zu benutzen;true)
break()
}
Die Grafik kann die gleiche in beiden Zuständen sein.

Bei einem Character geht das so einfach nicht. Da kann man z.B.
mit bools arbeiten.

Gruss

JH
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

rumpel
PaC-DK Newby
Posts: 11
Joined: 14 May 2012, 21:34

Re: Testen

Post: # 78951Post rumpel
15 May 2012, 13:03

Wow, danke lieber Japanhonk für die ausführlichen Ratschläge!

Das mit den Savegames ist eine verdammt gute idee, wieso bin ich da nicht selbst draufgekommen, lol?
:mmh:

Mit der Türsprechanlage wollte ich ein komplettes Gespräch basteln, also mit verschiedenen Fragen und Antworten
wie bei einem Gespräch mit einem normalen Charakter. Deswegen dachte ich, das Gerät als Charakter zu gestalten
wäre sinnvoller...

DANKE! :thumbup:

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Testen

Post: # 78952Post japanhonk
15 May 2012, 15:55

verschiedene Fragen und Antworten lassen sich per Textscene (...)
realisieren.
Das gefiel mir aber so nicht und ich habe einen anderen Weg gewählt.
Ich habe auch in meinem aktuellen Spiel eine - meiner Ansicht nach -
sehr schöne Möglichkeit gefunden, ein Gespräch ablaufen zu lassen,
dieses ist dann aber linear, d.h. festgelegter Ablauf :

ich habe eine grosse Funktion geschrieben, in der eine Ablaufvariable
gesetzt wird und der gesamte Dialog enthalten ist.
Das schafft Übersicht...
Ein Objekt nutze ich dabei als Timer. Das läuft mit 1 Bild pro Sekunde ab, setzt die Variable um 1 hoch und startet die Textfunktion.
Skriptzeile in der Animation.

Wenn ich einen Dialog starten will, passiert beim Aufruf Folgendes :

setobj (timer_obj;1) ---> Solange das Objekt auf 1 steht, wird die
Textfunktion alle 30s erneut aufgerufen
und die Variable Text_timer um 1 erhöht
setbool (click;true)
function (textfunction)

Textfunction:
setobject (closewindowbutton;1)
setobj (textfenster;1)
if_num (text_timer;1)
{
speech (self;blabla;true)
stopfunction (textfunction)
}
if_num (text_timer;2)
{
speech (other;blabla;true)
stopfunction (textfunction)
}
if_num (text_timer;3)
{
setbool (click;false)
speech (self;blabla;true)
setobj (timer_obj;0) ----> Ende dieses Dialoges, Timer Ausschalten
stopfunction (textfunction)
}

Abschliessend steht im Objekt "closewindowbutton" noch drin:

on (click)
{
if_bool (click;true)
{
setnum (text_timer;+1)
function (textfunction)
}
if_bool (click;false)
{
hidealltext()
setobj (timer_obj;0)
setobj (textfenster;0)
setobj (buttonwindowclose;0)
}
}

Der Sinn ist Folgender :

- Das Timerobjekt wird eingeschaltet
( 1. Zustand = langasamer Zähler, 2. zustand, schneller Zähler...)

- Die Startvariable für den gewünschten Dialog wird gesetzt
- Die Anzeigefunktion wird zum ersten Mal aufgerufen

In der Textfunktion :

- Der Knopf zum Fensterschliessen wird sichtbar
- Das Textfenster wird eingeschaltet
- Textausgabe für Variable 1

Bei Klick aufs Fenster wird der Zähler um 1 erhöht und die Textfunktion neu aufgerufen -> der nächste Text erscheint sofort

Das Timer_obj setzt jetzt den Zähler um 1 hoch und ruft die
Textfunktion wieder auf
( -> automatischer Ablauf, wenn nicht geklickt wird )

Dann wiederholt sich das Ganze, bis der Zähler ausgeschaltet wird
(setobj (timer_obj;0)
und der bool "click" auf false gesetzt wird.
Somit verschwindet das Textfenster und der Text, wenn alles durchgelaufen ist und der Button geklickt wird.

Hoffe, dass das einigermassen verständlich ist
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

rumpel
PaC-DK Newby
Posts: 11
Joined: 14 May 2012, 21:34

Re: Testen

Post: # 78953Post rumpel
15 May 2012, 16:22

OMG! Das tut mir jetzt leid, weil ich das Problem in der Zwischenzeit schon mit einem Charakter gelöst habe, was übrigens bestens funktioniert! Danke für deine Mühe; wer weiß, vielleicht kann ich das ja später gebrauchen! THANK YOU, GOOD SIR!

Eine andere Frage hätte ich aber noch :mrgreen:

Ich habe einen Raum, der sehr groß sein soll und der Charakter dementsprechend im Hintersten Bereich ganz winzig erscheinen muss.
Auch wenn ich den Zoomfaktor auf maximal stelle, genügt es nicht und der Char bleibt einfach viel zu groß.
Ich habe es dann auch mit charzoom probiert, allerdings wird dann der Char nicht mehr entsprechend der Distanz skaliert...

Gibt es eine Möglichkeit, den Zoom faktor zu erhöhen (nicht 9 sonder zB. 20?)

Herzliche Grüße,
Rumpel

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Testen

Post: # 78954Post japanhonk
15 May 2012, 16:34

Du kannst über 100 bei der FIGUR hinausgehen.
Da sind Werte von 0-300 % möglich im Characterfenster.

Allerdings wird dir ein höherer Wert nicht helfen, du willst ja , dass es entsprechend klein wird.

Der Zoomfaktor im Raumfenster ist -glaube ich- nicht höher, als 9 einstellbar. Hast Du denn mit den blauen Balken der Raumtiefe
gearbeitet ?? Bei mir wird da jede Figur nahezu unsichtbar bei Faktor 9

Möglich wäre evtl im On (enter) skript des Raumes :

on (enter)
charzoom (figur;50)

Wenn ich mich nicht irre, wird die engine das als startwert nutzen, um
die figur zu zoomen.
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

rumpel
PaC-DK Newby
Posts: 11
Joined: 14 May 2012, 21:34

Re: Testen

Post: # 78955Post rumpel
15 May 2012, 21:22

ich hatte es auch mit on (enter) gelöst; das problem ist allerdings, dass die figur konstant
den eingegebenen Wert beibehält und eben auch ganz vorne im raum klein bleibt, was natürlich
mumpitz ist.

Das Problem ist, dass die Perspektive auf den Raum so ist, dass die begehbaren walkmap-punkte
sehr begrenzt sind und sich im unteren viertel des bildes konzentrieren. Da hilft auch kein 9er zoom-faktor...

Dann werde ich wohl einen konstant kleinen Char benutzen müssen!

nichtdestotrotz, vielen lieben dank, unbekannter aber überaus hilfsbereiter japanhonk! :ugly:

grüßle.

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Testen

Post: # 78956Post japanhonk
15 May 2012, 21:36

Hmmm...ich hatte mal die Walkmappunkte mit charzoom Befehlen belegt,
aber dann sprang die Grösse recht unansehlich um...es sah einfach blöd aus...

Helfe gerne, wenn ich kann :banana:
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

rumpel
PaC-DK Newby
Posts: 11
Joined: 14 May 2012, 21:34

Re: Testen

Post: # 78958Post rumpel
16 May 2012, 09:59

Hey! Ich kapier's gerade nicht! Was ist an dem Code falsch:

if_bool (newton_betreten; true)
{
on (mouse)
showinfo (Newtons Fenster; false)

on (click)
walkto (self; 6; 15; 2)

on (look)
speech (self; Das müsste Newtons Fenster sein. Es ist offen.)
break ()
}


if_bool (newton_betreten; false)
{
on (mouse)
showinfo (Fenster; false)

on (click)
walkto (self; 6; 15; 2)

on (look)
speech (self; Ein offenes Fenster.)
}

Auch wenn der bool newton_betreten false ist, ist der obere code aktiv?! Warum???

Und eine weitere Frage, die ich nicht mit Hilfe der Tuts oder der Hilfe beantworten konnte:
kann mann bools kombinieren? also if_bool (bla; true) UND if if_bool (blabla;true)...?

grüßle

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Testen

Post: # 78959Post japanhonk
16 May 2012, 16:47

Schon der erste Blick zeigt einen dicken Schnitzer :

if_bool (newton_betreten; true)
{
on (mouse)
showinfo (Newtons Fenster; false)
...
Das geht so nicht. Du kannst nicht erst den Bool abfragen und dann
erst die Ereignisse definieren.

Andersrum schon :

on (mouse)
{
if_bool (newton_betreten; true)
showinfo (Newtons Fenster; false)
if_bool (newton_betreten;false)
showinfo (Fenster; false)
}

on (click)
{
if_bool (newton_betreten; true)
walkto (self; 6; 15; 2)
}
usw

Alles klar ? :mrgreen:
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

rumpel
PaC-DK Newby
Posts: 11
Joined: 14 May 2012, 21:34

Re: Testen

Post: # 78960Post rumpel
16 May 2012, 18:30

Oh mann... Faulheit und scripten vertragen sich nicht :ugly:

Mal wieder: Danke!

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Testen

Post: # 78962Post japanhonk
16 May 2012, 20:22

Ach ja, deine zweite Frage hab ich übersehen :

Man kann bools kombinieren, allerdings nicht ganz so, wie du dir das
denkst...

Bsp:

Wenn bool 1 UND bool 2 TRUE sind, dann Teil A ausführen :

if_bool (bool_1;true)
if_bool (bool_2;true)
cutscene (Teil_A )

Jetzt als ODER Verknüpfelung....

if_bool (bool_1;true)
cutscene (Teil_A)
if_bool (bool_2;true)
cutscene (Teil_A)

Und nu verknüppen wir das mit NAND: (ifnot ist bei bools aber eigentlich blödsinn...aaaaber ....geht :mrgreen: )

if_bool (bool_1;true)
ifnot_bool (bool_2;true)
cutscene (Teil_A)

besser so :

if_bool (bool_1;true)
if_bool (bool_2;false)
cutscene (Teil_A)


so...mehr Beispiele schreib ich jetzt nicht...noch mehr verknüpfen und
ich habe nen Teppich.... :ugly:

Das Grundprinzip bei If Anweisungen : ist die erste Anweisung erfüllt,
wird der Befehl direkt dahinter ausgeführt, andernfalls erst der übernächste.
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

rumpel
PaC-DK Newby
Posts: 11
Joined: 14 May 2012, 21:34

Re: Testen

Post: # 79011Post rumpel
07 Jun 2012, 12:10

So! Nun bin ich schon FAST fertiog mit meinem kleinen Adventure!

2 (hoffentlich) letzte Fragen habe ich aber leider noch:

Das Spiel beginnt mit einem Menü (Raum). Wenn man auf den beenden-button drückt,
möchte ich natürlich, dass das spiel beendet wird und man zurück zur windows-oberfläche gelangt.
entweder ich bin auf beiden augen blind oder einfach nur blöd, aber ich konnte den befehl nicht
finden, der das veranlasst?

Und die zweite Frage bezeiht sich auf das ende des Adventures: nach dem Abspann, gelangt man
wieder zum Hauptmenü vom Anfang und kann das spiel von vorne beginnen. gibt es einen befehl,
der ALLE räume, einstellungen, charaktere, bools usw. wieder auf ihren ursprung zurücksetzt?

herzliche grüße und danke im voraus,
rumpel

DeinTroll
Experienced PaC-DK User
Posts: 561
Joined: 07 Sep 2011, 21:33
Location: In der Ortenau
Contact:

Re: Testen

Post: # 79012Post DeinTroll
07 Jun 2012, 12:34

Zur ersten frage:

Code: Select all

quit ()
Zur zeiten frage:

Code: Select all

 restart ()
Mit "restart" kommt man auf den Anfangsraum, mit allen Variablen und co zurück gesetzt, soweit ich weiß.
Image

rumpel
PaC-DK Newby
Posts: 11
Joined: 14 May 2012, 21:34

Re: Testen

Post: # 79013Post rumpel
07 Jun 2012, 13:15

wow, cool! danke für die schnelle antwort!

eine sache ist mir noch eingefallen! wie brennt man das spiel so auf cd, dass es installierbar wird?
also mit Setup, verzeichnis auswählen usw.? oder geht das gar nicht? wenn nicht - lässt sich das
spiel auch von CD spielen? oder muss man den ordner auf die festplatte ziehen?

grüßle!

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Testen

Post: # 79014Post japanhonk
07 Jun 2012, 13:41

Entweder :

Erstelle das Spiel in einem leeren Ordner - und pack den auf CD

Da sind dann alle Daten drin.

Oder :

Kopiere die Ordner Data und Saves, ausserdem die Setup, die Exe Datei und bass.dll, dann hast Du auch alles dabei.
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

DeinTroll
Experienced PaC-DK User
Posts: 561
Joined: 07 Sep 2011, 21:33
Location: In der Ortenau
Contact:

Re: Testen

Post: # 79015Post DeinTroll
07 Jun 2012, 14:01

Einige benutzen auch Winrar. Damit kann man ein "Selbstendpackendes Archiv erstellen". Das ist so ähnlich wie ein Installationsprogramm. Aber wenn du es wie japanhonk beschrieben auf CD brennst, kannst du es auch von der CD spielen. Aber da der Kommerzielle vertrieb von Spielen die mit dem PACdk gemacht wurden, nicht erlaubt ist, macht es eh wenig sinn es auf CD zu brennen...
Image

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Testen

Post: # 79016Post japanhonk
07 Jun 2012, 14:14

Je nachdem,wie umfangreich das Spiel ist, ist ein Packen nicht unbedingt
notwendig - als Downloadversion sieht es da anders aus.
Und von CD direkt zu spielen ist -je nach System - etwas umständlich.
(Kommt auf die Laufwerksgeschwindigkeit an )
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

Post Reply