Welche CVS-Version ?

Hier können sich alle gegenseitig helfen beim erstellen eines Spiels

Moderator: Agatho

Beitragvon lu#36 » 06.02.2006, 02:08

das ist eine file in der die verschiedenen terrains festegelt werden.

es gibt eine funktion die die datei erstellt oder du erstellst sie per hand.

also das script heisst terrain.
es erwartet [width [height [seed]]] terrain-spec als Parameter.
with und height sind die anzahl der höhlen.
Seed ist der Startwert für den Zufallsgenerator und ist eine beliebige Zahl.
Die Specs sind festgelegt folgendermaßen: .:30 T:25 M:25 ~:20
. = Ebene
T = Wald
M = Gebirge
~ = Sumpf
Die Zahlen dahinter ist die Verteilung in Prozent.

> mymap
lenkt die ausgabe in eine datei um.


beispiel:
terrain 30 30 7 .:30 T:25 M:25 ~:20 > mymap

jetzt hast du eine datei mymap in der die karte in den zeichen .TM~ angezeigt wird.

diese datei gibst du nun im create an

bsp:

php createTerrainFromMapfile.php mymap 100

Die "100" hinten ist die Anzahl der Startpositionen.

ich hoff du kannst damit was anfangen.

mfg lu
Benutzeravatar
lu#36
Proviantschlepper
Proviantschlepper
 
Beiträge: 69
Registriert: 30.03.2004, 13:54
Wohnort: Darmstadt

Beitragvon Firak » 06.02.2006, 14:04

Fast richtig... nur ein paar kleine Korrekturen von mir:

> with und height sind die anzahl der höhlen.

Es sind die Dimensionen der Karte (das meintest Du aber sicher auch).

> Seed ist der Startwert für den Zufallsgenerator und ist eine beliebige Zahl.

Nein, auch wenn das so klingt. Es ist die Anzahl der Startpositionen für den simulierten Wachstumsprozeß der Terrainflächen. Anschaulich formuliert bestimmt es die mittlere Größe der dabei entstehenden Terrainflecken, kleinere Werte führen zu größeren zusammenhängenden Flächen. Die Voreinstellung (wenn man den Wert nicht angibt) ist (Breite x Höhe) / 40.

> Die Zahlen dahinter ist die Verteilung in Prozent.

Es ist zwar eigentlich nur eine Gewichtung, aber wenn die Summe der Werte 100 ergibt, entspricht das der prozentualen Verteilung.

> terrain 30 30 7 .:30 T:25 M:25 ~:20 > mymap

Noch eine Warnung (die vermutlich im Wiki stehen solte):
Unter Linux bekommt man lustige Fehlermeldungen, wenn man hier das Zeichen "~" nicht in Anführungszeichen eingibt (wer neugierig ist, kann ja mal überlegen warum), d.h. man sollte es z.B. so eingeben:

terrain 30 30 7 .:30 T:25 M:25 "~:20" > mymap
Night falls and the foul are abroad...
Firak
Halbgott des Schattens
Halbgott des Schattens
 
Beiträge: 169
Registriert: 28.01.2004, 14:35
Wohnort: Osnabrück

Beitragvon Forsaker » 06.02.2006, 15:19

Danke !!! :)

Das hilft mir schon sehr weiter - btw. es gab doch mal ein etwas ausführlicheres Wiki, was nur über einen dyndns-account zugänglich war ... gibts den überhaupt noch ? Hatte es schon mehrfach probiert und nie war der PC online.

Btw. die "~" könnte zu Verwirrungen führen weil sie als Abkürzung fürs Homeverzeichnis gilt.

Mich würde noch interessieren, ob man die Maps auch manuell erzeugen kann. Ich hätte da ein paar Ideen, die der Zufallsgenerator nicht hinbekommen würde. (z.b. eine Landkarte von Europa)



MfG
Forsaker
Spielball der Götter
Spielball der Götter
 
Beiträge: 44
Registriert: 26.08.2005, 18:53

Beitragvon lu#36 » 06.02.2006, 15:27

lu#36 hat geschrieben:es gibt eine funktion die die datei erstellt oder du erstellst sie per hand.


erzeug die datei einmal mit dem script und schau sie dir dann im vi an.

dann erkennst du wie das aufgebaut ist.
dannach kannst du dich ja mal ransetzen und das per hand machen.


@firak danke für die infos.

das tut ist jetzt in einem forum eingebaut:

http://57060.rapidforum.com/area=11
Benutzeravatar
lu#36
Proviantschlepper
Proviantschlepper
 
Beiträge: 69
Registriert: 30.03.2004, 13:54
Wohnort: Darmstadt

Beitragvon Forsaker » 06.02.2006, 18:46

h733363:/home/ticker # terrain 30 30 7 .:30 T:25 M:25 "~:20" > mymap
-bash: terrain: command not found


bin als root drin .. rechte hab ich also zum ausführen. was könnte da fehlen ? Die "Terrain" ist ebenfalls in dem Ordner, oder gibts noch ein 2. Script ?


h733363:/home/ticker # dir terrain
-rwxr-xr-x 1 ticker www 15837 Jan 4 14:40 terrain
Forsaker
Spielball der Götter
Spielball der Götter
 
Beiträge: 44
Registriert: 26.08.2005, 18:53

Beitragvon Firak » 06.02.2006, 22:59

Vermutlich ist der aktuelle Katalog nicht im Pfad. "./terrain" sollte aber funktionieren:
Code: Alles auswählen
./ticker 30 30 7 .:30 T:25 M:25 "~:20" > mymap
Night falls and the foul are abroad...
Firak
Halbgott des Schattens
Halbgott des Schattens
 
Beiträge: 169
Registriert: 28.01.2004, 14:35
Wohnort: Osnabrück

Beitragvon Forsaker » 09.02.2006, 21:09

h733363:/home/ticker # php createTerrainFromMapfile.php mymap 10
The specified mapfile 'mymap' contained a total of 900 cells.

It was chunked to a map of 100x100 which should be 10000 cells
updating caves' terrain Fehler beim Eintragen des neuen Terrains!
updating caves' Starting_positions .



It was chunked to a .... es wurde verklumpt ? oder was soll das heißen ? :D


ich hab mal die 30x30 map aus eurem beispiel genommen ... jetzt meckert er beim erstellen der startpositionen ein bisschen :)



An der größe der Karte liegt es nicht :

h733363:/home/ticker # php createTerrainFromMapfile.php mymap 100
The specified mapfile 'mymap' contained a total of 10000 cells.
It was chunked to a map of 100x100 which should be 10000 cells
updating caves' terrain Fehler beim Eintragen des neuen Terrains!
updating caves' Starting_positions .
Forsaker
Spielball der Götter
Spielball der Götter
 
Beiträge: 44
Registriert: 26.08.2005, 18:53

Beitragvon Firak » 10.02.2006, 12:20

"chunked" heißt eher so etwas wie "zerstückelt". Gemeint ist einfach, daß er die Terraindaten in eine Karte von 100x100 Feldern eingeteilt hat. Im ersten Fall waren dazu aber zu wenig Felder in der Datei (was offensichtlich nicht klappen kann).

Warum er diese nun nicht in die Datenbank schreiben konnte ist eine andere Frage, die ich Dir so leider auch nicht beantworten kann. Leider gibt das Skript in der derzeiten Form keine sinnvollen Fehlermeldungen aus. :(

Du könntest vielleicht in der Datenbank nachsehen, ob die Cave Tabelle korrekt angelegt wurde (und ob ggf. teilweise ein Terrain eingetragen worden ist).
Night falls and the foul are abroad...
Firak
Halbgott des Schattens
Halbgott des Schattens
 
Beiträge: 169
Registriert: 28.01.2004, 14:35
Wohnort: Osnabrück

Beitragvon Forsaker » 11.02.2006, 19:50

könnte am createCave liegen ...
"php createCave.php xStart xEnd yStart yEnd"


müssen xStart und yStart 0 oder 1 sein, damit es funktioniert ?

also quasi 1-100 oder 0-99, oder spielt es keine rolle, weil einfach durchgezählt wird?


h733363:/home/ticker # php createCave.php 1 100 1 100
Creating caves starting with caveID 1...................................................................................................
Created 9801 caves.



müssten das nicht eigentlich 10.000 sein ? 100 x 100


##########################


Update

h733363:/home/ticker # php createCave.php 1 100 1 100
Creating caves starting with caveID 1...................................................................................................
Created 9801 caves.
h733363:/home/ticker #
h733363:/home/ticker # ./terrain 99 99 7 .:30 T:25 M:25 "~:20" > mymap
h733363:/home/ticker # php createTerrainFromMapfile.php mymap 99
The specified mapfile 'mymap' contained a total of 9801 cells.
It was chunked to a map of 99x99 which should be 9801 cells
updating caves' terrain Fehler beim Eintragen des neuen Terrains!
updating caves' Starting_positions .


Vorher habe ich die DB komplett resettet und aus den SQL-Files neu erzeugt. Ist also alles 100% frisch. Ich weiß leider nicht, warum er die betreffenden Tabellen nicht updaten kann.
Forsaker
Spielball der Götter
Spielball der Götter
 
Beiträge: 44
Registriert: 26.08.2005, 18:53

Beitragvon Firak » 13.02.2006, 00:23

> müssen xStart und yStart 0 oder 1 sein, damit es funktioniert ?

Nein.

> müssten das nicht eigentlich 10.000 sein ? 100 x 100

Das würde man erwarten, allerdings erzeugt das Skript die Höhlen nur bis eins vor den Endwert, d.h. in diesem Fall nur von 1-99 (in beiden Koordinaten). Das ist sicher verbesserungswürdig, entweder in der "Dokumentation" oder im Programmtext...

> Ich weiß leider nicht, warum er die betreffenden Tabellen nicht updaten kann.

Wenn Du ein wenig PHP kannst, könntest Du die betreffenden SQL-Befehle in dem Skript (das "INSERT INTO Cave ...") einfach mal ausgeben lassen (statt sie an die DB zu schicken), und dann probieren, eins davon manuell (z.B. über phpMyAdmin) von der DB ausführen zu lassen. Vielleicht sieht man dann eine bessere Fehlermeldung.
Night falls and the foul are abroad...
Firak
Halbgott des Schattens
Halbgott des Schattens
 
Beiträge: 169
Registriert: 28.01.2004, 14:35
Wohnort: Osnabrück

Beitragvon Forsaker » 13.02.2006, 18:42

function setTerrain($terrain, $offsetX, $offsetY){
global $db;
echo "updating caves' terrain ";
for ($y = 0; $y < sizeof($terrain); ++$y){
for ($x = 0; $x < sizeof($terrain[0]); ++$x){
$query = "UPDATE Cave SET terrain = {$terrain[$y][$x]} WHERE xCoord = " . ($x + $offsetX) . " AND yCoord = " . ($y + $offsetY);
if (!$db->query($query)){
echo "Fehler beim Eintragen des neuen Terrains!\n";
return 1;
}
}
echo ".";
}
echo "\n";
}


Wenn keine query mehr offen ist, dann wird demnach der Fehler geworfen. Ich habe den User auf "All Priv" für die Game-DB .. das sollte Rechtefehler ausschließen. Außerdem werden die Höhlen fehlerfrei generiert.

Was könnte die DB veranlassen, die Verbindung zu trennen ? "Cave" ist defintiv vorhanden. Die Anzahl der Einträge passt auch.
Forsaker
Spielball der Götter
Spielball der Götter
 
Beiträge: 44
Registriert: 26.08.2005, 18:53

Beitragvon Forsaker » 21.02.2006, 13:42

Bin immernoch nicht wirklich weiter... das problem ist, dass ich keine 100x100 Befehle manuell eingeben kann :)

Der Fehler wird nur geworfen wenn die querry mitten im Updaten abgebrochen wird. In Java hätte ich dem script einfach ein Catch der Exception verpasst ... aber ich glaube php kann sowas nicht, oder ?
Forsaker
Spielball der Götter
Spielball der Götter
 
Beiträge: 44
Registriert: 26.08.2005, 18:53

Vorherige

Zurück zu Bastelstube für die CVS Version

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron