Silver_Star

Kommentare anzeigen Worklog abonnieren

Worklogs Silver_Star

Das Ziel rückt näher.....

Mittwoch, 4. Juni 2008 von Silver_Knee
Hurra da ist ne grüne Kiste auf der Map!

"Moment.... die war schon vorher da.... Doch warum schreibt der jetzt nen Eintrag?"

Na, weil diese Kiste ein Geladenes Objekt ist... Ich habe mir ein Format einfallen lassen um Physix-Objekte zu speichern ".pho" und ich habe den passenden loader sogleich eingebaut.... nun muss ich mein map Format nur noch so umgestalten, dass so ne art "Entitys" möglich ist.
Hmmm erinnert irgendwie an bsp.... ist aber ja auch mein Vorbild.

Die Große Neuerung daran ist vorerst, dass nun sowas wie Player-Spawnpunkte möglich sind. Außerdem hab ich mal wieder an den txts rumgewurschtelt... ich werde wohl bald ne neue Beta releasen. Vorher gibt's noch was anderes von mir für euch:

Code: [AUSKLAPPEN]
Dim tmp_KP.KP(0)
Dim tmp_VK.VK(0)
Function LoadPhysixObject(filename$,x#,y#,texdir$="")
   file=ReadFile(filename)
   If file=0
      DebugLog "failed to load "+filename
      Return
   EndIf
   max=ReadByte(file)-1
   Dim tmp_KP(max)
   For count=0 To max
      tmp1#=ReadFloat(file)
      tmp2#=ReadFloat(file)
      tmp3#=ReadFloat(file)
      tmp4#=ReadFloat(file)
      tmp5#=ReadFloat(file)
      tmp_KP(count)=NewKP(ImageKP,tmp1+x,tmp2+y,tmp3,tmp4,1,tmp5)
   Next
   max=ReadByte(file)-1
   Dim tmp_VK(max)
   For count=0 To max
      itmp1=ReadByte(file)
      itmp2=ReadByte(file)
      tmp1#=ReadFloat(file)
      tmp2#=ReadFloat(file)
      tmp_VK(count)=NewVK(ImageVK,tmp_KP(itmp1),tmp_KP(itmp2),tmp1,tmp2)
   Next
   
   max=ReadByte(file)-1
   For count=0 To max
      itmp1=LoadImage3D(texdir+ReadString(file),2,2,1)
      
      tmp1#=ReadFloat(file)
      tmp2#=ReadFloat(file)
      
      tmp3#=ReadFloat(file)
      tmp4#=ReadFloat(file)
      
      tmp5#=ReadFloat(file)
      tmp6#=ReadFloat(file)
      
      itmp1=GrabImage3D(itmp1,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6)
      
      itmp2=ReadByte(file)
      
      tmp1#=ReadFloat(file)
      tmp2#=ReadFloat(file)
      tmp3#=ReadFloat(file)

      NewVKAM(itmp1,tmp_VK(itmp2),tmp1,tmp2,tmp3,3)
   Next
   
   Dim tmp_KP(0)
   Dim tmp_VK(0)
End Function


Bei meiner Funktion in der Star.bb sind zwar noch ein paar Späße wie Dateinamen anpassen an die MOD oder Texturen nicht wiederholt zu laden aber im großen und ganzen ist das der pho.Loader. Diese ekelhaften tmp-Variablennamen sind -nach Banks- das Speicherschonenste was mir eingefallen ist.

Zu der Frage: "Wie Generiert man eine Solche Datei?"
Die Antwort: "Keine Ahnung ^_^' !!"

Wer ein wenig das CodeArchiv mit dem D3D-Thread im Auge behällt, wird bemerkt haben, dass ich da ziemlich dran rumgurke... Mein Problem ist Dafür ne Art Editor zu schreiben, aber ich bekomms net so ganz hin. Deshalb:
Wer Lust hat sich an diesem Projekt zu beteiligen, soll mich anschreiben!

"Wie Kommt jetzt die Kiste auf den Bildschirm, wenn du zu blöd bist einen Editor zu schreiben??"

Wie immer, wenn ich was nicht kann: Ich blase alles außenrum auf und mach dann doch alles HardCoded.
Ihr könnt ja selbst so einen "stupid.pho.builder", wie ich ihn getauft habe bauen. Ich gebe dazu mal meine brav auskommentierte und formatierte Version Preis. Sie hat den Code: [AUSKLAPPEN]
file=WriteFile("output.pho")

;KPs
WriteByte file,4;Anzahl der KPs

;Details
WriteFloat file,-25;x
WriteFloat file,25;y
WriteFloat file,6;Radius
WriteFloat file,1;Masse
WriteFloat file,100;Drehmoment

WriteFloat file,25
WriteFloat file,25
WriteFloat file,6
WriteFloat file,1
WriteFloat file,100

WriteFloat file,25
WriteFloat file,-25
WriteFloat file,6
WriteFloat file,1
WriteFloat file,100

WriteFloat file,-25
WriteFloat file,-25
WriteFloat file,6
WriteFloat file,1
WriteFloat file,100

;VKs
WriteByte file,6;Anzahl der VKs

;Details
WriteByte file,0;KP1
WriteByte file,1;KP2
WriteFloat file,1;Federung
WriteFloat file,1;Dämpfung

WriteByte file,1
WriteByte file,2
WriteFloat file,1
WriteFloat file,1

WriteByte file,2
WriteByte file,3
WriteFloat file,1
WriteFloat file,1

WriteByte file,3
WriteByte file,0
WriteFloat file,1
WriteFloat file,1

WriteByte file,0
WriteByte file,2
WriteFloat file,1
WriteFloat file,1

WriteByte file,1
WriteByte file,3
WriteFloat file,1
WriteFloat file,1

;Texturen
WriteByte file,1;Anzahl der Texturen

;Details
WriteString file,"grass.png"
WriteFloat file,0; \
WriteFloat file,0;  | Grabbing Area |
WriteFloat file,64; |  für die D3D  |
WriteFloat file,64;/
WriteFloat file,1;>Scale\
WriteFloat file,1;>Scale/
WriteByte file,1;VK auf der die Textur gezeigt wird
WriteFloat file,25;>Relative Position\   
WriteFloat file,25;>  auf dieser VK   >
WriteFloat file,0 ;>   und Drehung   /

CloseFile file


Ihr werdet am "builder" erkennen, dass das Format sehr freizügig ist, und für eine Kiste oder Pistole genau so gut genutzt werden kann, wie für einen Todesstern. Die Begrenzungen habe ich Bei KPs, VKs und Texturen je auf 255 gesetzt. Ich glaube bei mehr würde eh die Physix so langsam den Geist aufgeben.

Die Idee

Sonntag, 11. Mai 2008 von Silver_Knee
Wer kennt das Spel CS denn nicht? Seine Grundidee soll nun auch meine werden... aber nein nicht das Spielprinzip.... Nein ich will auf das Programm raus.... die hl2.exe.... eine exe -1000 Spiele. Mods also Modifikationen vom Original...

Bis jetzt ist schon ein ganzer Haufen variabelalles über TXTs und Verweise auf andere TXTs

> Die Menüs sind fertig.
> Der Maploader ist momentan noch recht unbeholfen aber er funzt...
> Der Physix-Loader ist noch nicht fertig, weil...
> Der pho.builder noch nicht fertig ist
> Der map.builder hingegen schon.

Ich habe mal ne DEMO hochgeladen. Die fehlenden Teile sind hardcoded:
Player/Physix-Objekte/(Server/Client)-Verhalten/Map-Wahl menü

Diese Version beherbergt eine map die bei "Server Starten" automatisch geladen wird. und auf der eine Kiste steht die man mt dn tasten 1 und 2 gegen wände werfen kann.

Screens:


user posted image
user posted image

Download:
Zitat:

Achtung damit das Spiel läuft muss man es "installieren" dh nach dem entpacken die "INSTALL Silver_Star.bat" starten. Diese Datei sagt Silver_Star nur wo seine dateien liegen. man könnte die dateien auch in Alaska lagern. und in der config.txt einen verweis nach Alaska setzen...

Starten muss man damits was zu sehen gibt "START Silver Deathmatch" startet man die exe normal weiß sie nicht welche einstellungen sie laden soll und geht auf eine default Beinstellung die noch nciht richtig lauffähig ist.

Menüs die noch nichts können wurden mit (DEMO) gekennzeichnet.


http://fscom.funpic.de/ erst das Nackte Silver_Star laden und dann die Deathmatch-Mod in das selbe Verzeichnis speichern

Maps Kann man malen und sie im map.builder laden wenn sie im Maps Ordner der mod liegen.

Z=rückgängig
S=Speichern
Rechte Maustaste=Vom roten punkt bis zur Mauskoordinate eine Kollisionsliene ziehen.
Linke Maustaste=den roten Punkt verschieben
Mittlere Maustaste=Einen Stein werfen um zu testen ob Die Kollisionslienie richtig herum gezogen ist. falls nicht einfach von der anderen Seite zurück ziehen.
^=Linien verstecken: So sieht die Map im spiel aus
Gespeichert werden die Maps im map-Format.

der momentane Loader sieht so aus:
Code: [AUSKLAPPEN]
Function LoadMap(mapname$)
   Local xScale#,yScale#,count,MAXCL,x1#,x2#,y1#,y2#

   
   file=ReadFile("maps\"+mapname+".map")
   If file=0
      xScale=1
      yScale=1
   Else
      xScale=ReadFloat(File)
      yScale=ReadFloat(File)
   EndIf
   
   mapOrigin=LoadImage3D("maps\"+mapname+".png",2,2,1)
   MapImage=GrabImage3D(mapOrigin,0,0,1024,1024,xScale,yScale)
   
   If file<>0
      MAXCL=ReadInt(File)
      
      For count=1 To MAXCL
         x1=ReadFloat(File)
         y1=ReadFloat(File)
         x2=ReadFloat(File)
         y2=ReadFloat(File)
         NewCL(ImageCL,x1,y1,x2,y2)
         DebugLog x1+","+y1+" - "+x2+","+y2
      Next
      CloseFile file
   EndIf
   
   Return MapImage
End Function


Viel Spaß.