CastleWar

Kommentare anzeigen Worklog abonnieren

Worklogs CastleWar

Mods

Montag, 21. Februar 2011 von ToeB

So ich habe angefangen das Spiel Modbar zu machen. Dazu habe ich mir erstmal selber einen XML-Parser geschrieben, der das ganze Script einließt und ich dann nach belieben die Informationen auslesen kann. Mein Parser kann allerdings nur zwei arten von "Befehlen", einmal die Klammer
Code: [AUSKLAPPEN]

<test a="1" b="2">
</test>

Oder der ein-Zeilen-Befehl
Code: [AUSKLAPPEN]
<test a="1" b=2" />


Außerdem kann man auch mehrere Sachen in eine Zeile schreiben :
Code: [AUSKLAPPEN]
<a>1<b>2<c>3
</c>4</b></a>

Der Parser würde jetzt für dir a-Klammer den wert "" auslesen, für die b-Klammer "24" und für die c-Klammer "3". Parameter lassen sich allerdings nicht in mehrere Zeilen unterteilen, ich hielt das für unnötig Wink

Um euch mal zu zeigen wie das Script für die 4 Waffen, die schon implementiert sind, zu zeigen, hier mal der code :
Code: [AUSKLAPPEN]
<header>
   <defaultimage src="Gfx\Back.bmp" />
</header>
<body>
   <images>
      <animimage scr="Gfx\Inventar.bmp" name="inventar" sizex="32" sizey="32" frames="4" />
      <animimage scr="Gfx\Equipment.bmp" name="equip" sizex="24" sizey="24" frames="4" />
   </images>
   <items>
      <item typ="weapon" >
         <image>
            <inventar scr="inventar" frame="0" />
            <equip scr="equip" frame="0" />
         </image>
         <name>Ak-47</name>
         <weapon>
            <shottime scr="150" />
            <shotpower scr="6" />
         </weapon>
      </item>
      <item typ="weapon" >
         <image>
            <inventar scr="inventar" frame="1" />
            <equip scr="equip" frame="1" />
         </image>
         <name>Bazooka</name>
         <weapon>
            <shottime scr="1000" />
            <shotpower scr="50" />
         </weapon>
      </item>
      <item typ="weapon" >
         <image>
            <inventar scr="inventar" frame="2" />
            <equip scr="equip" frame="2" />
         </image>
         <name>Messer</name>
         <weapon>
            <shottime scr="500" />
            <shotpower scr="50" />
         </weapon>
      </item>
      <item typ="weapon" >
         <image>
            <inventar scr="inventar" frame="3" />
            <equip scr="equip" frame="3" />
         </image>
         <name>Uzi</name>
         <weapon>
            <shottime scr="50" />
            <shotpower scr="2" />
         </weapon>
      </item>
   </items>
</body>


Dort kann man sehen, dass ein Default-Image geladen wird für den Fall dass es ein Bild nicht gibt, dann werden die Benötigten Bilder geladen und mit einem Namen (ID) versehen, und dann werden die Items hinzugefügt, ich hab es extra "ITEMS" gennant und nicht "Weapons", weil es auch items gibt wie "Medipack" oder "Jetpack" usw., die soll man damit ja auch erstellen können. Das ganze sieht dann so im Spiel aus (mit überarbeiteten Schüssen) :
user posted image
Zu sehen ist das Kaufmenü mit allen 4 Waffen und oben die Inventar-Leisten mit den gekauften waffen, die UZI hat der Spieler in der Hand und schießt.

[Edit] : Hab das Script noch etwas erweitert, hinzugekommen ist :
Arrow Bilder können mit Flags geladen werden (bis jetzt MASKIMAGE und MIDHANDLEIMAGE)
Arrow Schüssen können jetzt übersichtlicher und individueller gestaltet werden (Gravitationseinwirkung, abschussstärke etc.)
Arrow Ein paar "Befehle" wurden anders Formatiert, einfach damit man nicht so viel code hat und es trotzdem noch übersichtlich ist.

Hier das momentane Script für Ak-47 und Bazooka :
Code: [AUSKLAPPEN]
<header>
   <defaultimage src="Gfx\Back.bmp" />
</header>
<body>
   <images>
      <animimage scr="Gfx\Inventar.bmp" name="inventar" sizex="32" sizey="32" frames="4" flag="MASK|MID" />
      <animimage scr="Gfx\Equipment.bmp" name="equip" sizex="24" sizey="24" frames="4" flag="MASK|MID" />
      <image scr="Gfx\Fire.png" name="shot1" flag="MID" scalex="0.25" scaley="0.05" />
      <image scr="Gfx\Schüsse.bmp" name="shot2" flag="MASK|MID" />
   </images>
   <items>
      <item typ="weapon" name="AK-47" >
         <image>
            <inventar scr="inventar" frame="0" />
            <equip scr="equip" frame="0" />
         </image>
         <data>
            <shot time="150" power="7" hit="direct" grav="0.01" shotpower="24" image="shot1" />
         </data>
      </item>
      <item typ="weapon" name="Bazooka" >
         <image>
            <inventar scr="inventar" frame="1" />
            <equip scr="equip" frame="1" />
         </image>
         <data>
            <shot time="1000" power="100" hit="50" grav="0.2" shotpower="5" image="shot2" />
         </data>
      </item>
   </items>
</body>

[/Edit]


mfg ToeB



Inventar

Freitag, 3. September 2010 von ToeB

user posted image

So hab jetzt ein Inventar-System eingebaut, damit kann man seine Ausrüstung später Individuell anpassen, Momentan hat man nur 5 Slots, werde aber einbauen das man sich evtl. Slots kaufen kann oder so...

Ein simples Kaufmenü ist auch schon drin, wie man sieht, Geld gibts allerdings noch nicht. Außerdem Können die Inventar einträge zwar schon aufgerufen werden, es bring allerdings noch nichts. Später kann man hier alles lagern, von Waffen und Medipacks bis hin zu Fallschirmen, NinjaSeilen und Jatpacks.

Außerdem gibts die berühmten Wolken wieder Wink

mfg ToeB

Jump'n'Run

Mittwoch, 1. September 2010 von ToeB

So die "Jump'n'run" - Engine ist nun Fertig. Man kann jetzt einen Spieler erstellen (Smiley), mit im Rechts / Links gehen und Springen. MapKollision ist fast 100% Fehlerfrei, benutze ein selbst geschriebenes "RectsOverlap" (Gibts ja soweit ich das gesehen hab nicht in BMax). Außerdem dreht sich der Player schon zur Maus.

Zum Spiel selber :
Ich habe mir überlegt, das ich dieses Tileset zwar nehme, aber der Editor nicht so Bleiben kann, da ich hinterher auch sachen wie "Maperweiterungen" einbauen möchte. Also z.B. auch zerbrechliche tiles etc. Auch habe ich mir überlegt, Das der Spielmodi nun so in etwa ablaufen soll :
Arrow Eine "neutrale" Burg in der Mitte der Map
Man kann in diese Burg reingehen durch die Tür
Arrow Ist man in der Burg, erscheint eine Hohe Map, die den Turm darstellen soll, also man muss dort hochspringen und z.B. Fallen ausweichen. Ist man oben, kann man die eigene Flagge hissen und die Burg gehört einem. Gibt also einen Punkt
Arrow Das andere Team muss jetzt versuchen die Burg wieder einzunehmen. Ich werde auch für solche zwecke sachen wie "claymores" etc einbauen, damit das verteidiger Team auch verteidigen kann.

Das war das was mir so Grob zu dem Thema durch den Kopf ging. Es muss an manchen Ecken noch abgerundet werden, aber so in etwa wirds außehen (Natürlich wird das Spiel wieder im Lan / Online zu spielen sein, aber ich überlege noch wie man Bots realisieren könnte ....

mfg ToeB

Es geht in eine neue Runde !

Sonntag, 29. August 2010 von ToeB

So das ich sowieso grad ein schönes "Anfänger"-Projekt für BlitzMax suche, hab ich mir gedacht diesem Projekt in Blitzmax neues Leben einzuhauchen. Also hab ich mich direkt mal dran gesetzt und einen TileEditor für die Maps angefangen. Um mir das spätere Map-Disignen zu vereinfachen, habe ich auch autotiles eingebaut. Das heißt, egal wo ich ein Tile setzte, es wird automatisch mit den danebenliegeneden Verbunden. Dafür musste ich das Tileset allerdings von den standart mäßigen 20 Tiles auf 48 erweitern, damit auch jede möglichkeit, wie Tiles zueinander stehen können, abgedeckt ist. (wenn jetzt einer nachrechnet, das es mehr kombinationen gibt, dann hat er recht, aber man braucht für bestimmte sachen auch Tiles doppelt Wink )

So hier mal der Editor zum Testen (Ist jetzt nix großartiges, außer das ich die Tiles komplett selber mit Paint gepixelt habe) :

https://www.blitzforum.de/upload/file.php?id=9410
Edit : Neue Version, diesmal im Debug mode, villeicht klärt sich dann der Fehler...

Ihr werdet in Zukunft noch mehr von diesem Projekt (jetzt in BMax ) hören. Bis dann,

ToeB

Neues vom Bau

Sonntag, 24. Mai 2009 von ToeB

So ich habe jetzt statt einer Player-To-Tile Kollision (die war mir zu fehlerhaft) die B3D eigene eingebaut, guckt mal iwo im Codearchiv, da müsste ein beitrag von Nobody sein, der das verfahren berschreibt.

Desweiteren habe ich das Ninjaseit komplett eingebaut, also mann kann jetzt pendeln, gegn mauern klatschten usw.

Ich bin grad dabei eine Console zu schreiben, damit ich, und später auch die spieler, daten verändern können, also z.B. gravitation, (cheats), servereinstellungen... Und natürlich werden da auch momentane ereignisse reingeschrieben wie abschüssse oder tode...
Dazu habe ich meine "SimpleGUI" - Engine eingebunden, da sie relativ schnell ist und ich weiß wie sie functioniert, um etvl. änderungen vorzunehmen Wink

Ich bin jetzt erstmal ne Woche (ab morgen) auf Klassenfahrt und danach die Pfingstferien weg. Heißt ich werd erst in mindestens 1,5 wochen wieder weiterarbeiten.

mfg ToeB

Enterhaken (Ninja)

Mittwoch, 20. Mai 2009 von ToeB

Ich habe jetzt fast alle waffen drin, jetzt ist mir spontan eine neue idee gekommen : Ich wollte eine art enterhaken machen, an dem sich der spieler dran hangeln kann. Das ganze läuft dann über eine selbst geschreibene Verlet-Physik (sehr einfach)... Mal gucken wie ich die Kollision mit der map hinbekomme...

Später, wenns fertig ist, schreib ich mehr Wink

mfg ToeB

Waffen

Sonntag, 17. Mai 2009 von ToeB

Also jetzt werde ich mich erstmal an die Waffen ransetzten, pixeln, einbauen, und so...

Waffen :
Arrow Machete (vorhanden)
Arrow Pistole (noch nicht vorhanden)
Arrow MaschienenPistole (noch nicht vorhanden)
Arrow MaschienenGewehr (vorhanden)
Arrow ScharfschützenGewehr (noch nicht vorhanden)
Arrow Bazooka (vorhanden)
Arrow Granaten (noch nicht vorhanden)

Außerdem habe ich mit meinem Bruder überlegt, das Spiel spannender zu machen, in dem jeder spieler eine spezielfährigkeit hat.

Arrow Feuer :
Muss abgeschossen werden, bei aufprall explodiert es und verbrennt alles feindliche in einem bestimmten radius...

Arrow Wasser :
Heilt deine mitspieler in einem bestimmten radius

Arrow Erde :
Ne art erdbeben, wer zu nah am "epizentrum" steht, dem dreht es die steuerung um.

Arrow Luft :
Man kann für einige zeit lang fliegen

Diese Fähigkeit hat man am anfang des Spiels so, hat man sie verbraucht kann man sie sich durch verschiedene sachen zurückgewinnen :
Arrow Geld
Arrow In einer Runde nicht sterben
Arrow Eine bestimmte anzahl von gegnern in einer Runde abschießen


Was haltet ihr so davon ?

mfg ToeB

Neues

Samstag, 16. Mai 2009 von ToeB

So ich hab wieder neue Sachen eingebaut.

Arrow ImageParticleEngine :
eine kleine engine, so ähnlich wie die ParticleEngine für die Pixel, nur halt für ganze Bilder, extra für das spiel gemacht. Damit kann man jetzt z.b. ein bild als Particle malen, welches immer kleiner wird, sich dreht etc.
Arrow Neue Waffe :
Bazzoka (dafür die Engine -> Rauch) mit sichtbaren geschossen, explodiert in rauch
Arrow Flüssiges Scrolling :
Habe das Scrolling etwas überarbeitet und jetzt hängt die Map dem Spieler ein wenig nach, so siehts besser aus Wink
Arrow Einige Bugs gefixed...

Edit: So jetzt könnt ihr auch wieder die bilder begutachten, mein bplaced account war abgelaufen weil ich die seite nicht so oft besucht habe, und musste deshalb mir einen neuen anlegen... Funtz jetzt aber wieder Wink



mfg ToeB

MapEditor

Mittwoch, 13. Mai 2009 von ToeB

So ich wollte die maps ein wenig schöner machen und bin grad dabei, den mapeditor beizubringen, die tiles so anzuordnen, das es wie in dem bild unten ausssieht (also man setzte einen stein iwo hin und dann werden alle steine geupadet und mit dem dann verbunden - falls welche in der nähe sind Wink )

Das funtz auch ganz gut aber jetzt wollte ichs so machen, das ich auch "Flächen" diffinieren kann, also das wenn man eine 3*3 fläche hat, das dann die nicht aus vier eckpunkten, 4 t-Stücke und einer kreuzung besteht (das sieht doof aus weil dann immer die kästchen dazwischen sind -.-). Die Tiles habe ich schon gemalt, aber es funtz noch nicht so ganz ... Sad

Edit:
So habs jetzt geschafft mit AußenEcken, InnenEcken,Rändern außen und innen, TStücke außen (innen fehlen noch...) :
user posted image
Und das Gute daran ist, man braucht nur die felder auszufüllen, das verbinden tut der Editor Wink

Das ganze funtz mit diesem Code: [AUSKLAPPEN]

Dim p(2,2)
Function UpdateMap()
   For xx = 0 To MapWidth-1
      For yy = 0 To MapHeight-1
         If map(xx,yy) > 0
            CheckField(xx,yy)
            If p(1,0)=0And p(1,2)=0And p(0,1)=0And p(2,1)=0 map(xx,yy) = 1            
            ;Horizontal
            If p(1,0)=0And p(1,2)=0And p(0,1)=0And p(2,1)>0 map(xx,yy) = 2
            If p(1,0)=0And p(1,2)=0And p(0,1)>0And p(2,1)>0 map(xx,yy) = 3
            If p(1,0)=0And p(1,2)=0And p(0,1)>0And p(2,1)=0 map(xx,yy) = 4
            ;Vertikal
            If p(1,0)>0And p(1,2)=0And p(0,1)=0And p(2,1)=0 map(xx,yy) = 5
            If p(1,0)>0And p(1,2)>0And p(0,1)=0And p(2,1)=0 map(xx,yy) = 6
            If p(1,0)=0And p(1,2)>0And p(0,1)=0And p(2,1)=0 map(xx,yy) = 7
            ;Ecken
            If p(1,0)=0And p(1,2)>0And p(0,1)=0And p(2,1)>0 map(xx,yy) = 8
            If p(1,0)=0And p(1,2)>0And p(0,1)>0And p(2,1)=0 map(xx,yy) = 9      
            If p(1,0)>0And p(1,2)=0And p(0,1)=0And p(2,1)>0 map(xx,yy) = 10      
            If p(1,0)>0And p(1,2)=0And p(0,1)>0And p(2,1)=0 map(xx,yy) = 11   
            ;T-Stücke
            If p(1,0)>0And p(1,2)=0And p(0,1)>0And p(2,1)>0 map(xx,yy) = 12   
            If p(1,0)>0And p(1,2)>0And p(0,1)>0And p(2,1)=0 map(xx,yy) = 13      
            If p(1,0)=0And p(1,2)>0And p(0,1)>0And p(2,1)>0 map(xx,yy) = 14      
            If p(1,0)>0And p(1,2)>0And p(0,1)=0And p(2,1)>0 map(xx,yy) = 15
            ;Kreuzung
            If p(1,0)>0And p(1,2)>0And p(0,1)>0And p(2,1)>0 map(xx,yy) = 16            
            ;Flächen            
            ;-->Ecken
            If p(2,1)>0And p(1,2)>0And p(2,2)>0And p(1,0)=0And p(0,1)=0 map(xx,yy) = 17   
            If p(0,1)>0And p(0,2)>0And p(1,2)>0And p(1,0)=0And p(2,1)=0 map(xx,yy) = 18
            If p(1,0)>0And p(2,0)>0And p(2,1)>0And p(0,1)=0And p(1,2)=0 map(xx,yy) = 19
            If p(0,0)>0And p(1,0)>0And p(0,1)>0And p(2,1)=0And p(1,2)=0 map(xx,yy) = 20   
            ;-->Kreuzung
            If p(0,0)>0And p(1,0)>0And p(2,0)>0And p(0,1)>0And p(1,1)>0And p(2,0)>0And p(2,1)>0And p(2,2)>0 map(xx,yy) = 21
            ;-->Ränder
            If p(1,0)>0And p(2,0)>0And p(2,1)>0And p(2,2)>0And p(1,2)>0And p(0,1)=0 map(xx,yy) = 22
            If p(1,0)>0And p(1,2)>0And p(0,0)>0And p(0,1)>0And p(0,2)>0And p(2,1)=0 map(xx,yy) = 23      
            If p(0,1)>0And p(2,1)>0And p(0,2)>0And p(1,2)>0And p(2,2)>0And p(1,0)=0 map(xx,yy) = 24
            If p(0,0)>0And p(1,0)>0And p(2,0)>0And p(0,1)>0And p(2,1)>0And p(1,2)=0 map(xx,yy) = 25
            ;-->T-Stücke
            If p(1,0)>0And p(0,1)>0And p(2,1)>0And p(0,2)>0And p(1,2)>0And p(2,2)>0And p(0,0)=0And p(2,0)=0 map(xx,yy) = 26   
            If p(1,0)>0And p(2,0)>0And p(2,1)>0And p(2,2)>0And p(1,2)>0And p(0,1)>0And p(0,0)=0And p(0,2)=0 map(xx,yy) = 27
            If p(0,0)>0And p(1,0)>0And p(2,0)>0And p(0,1)>0And p(2,1)>0And p(1,2)>0And p(0,2)=0And p(2,2)=0 map(xx,yy) = 28
            If p(0,0)>0And p(1,0)>0And p(0,1)>0And p(2,1)>0And p(0,2)>0And p(1,2)>0And p(2,0)=0And p(2,2)=0 map(xx,yy) = 29
            ;-->InnenEcken
            If p(0,0)>0And p(1,0)>0And p(2,0)>0And p(0,1)>0And p(2,1)>0And p(0,2)>0And p(1,2)>0And p(2,2)=0 map(xx,yy) = 30
            If p(0,0)>0And p(1,0)>0And p(2,0)>0And p(0,1)>0And p(2,1)>0And p(0,2)=0And p(1,2)>0And p(2,2)>0 map(xx,yy) = 31
            If p(0,0)>0And p(1,0)>0And p(2,0)=0And p(0,1)>0And p(2,1)>0And p(0,2)>0And p(1,2)>0And p(2,2)>0 map(xx,yy) = 32
            If p(0,0)=0And p(1,0)>0And p(2,0)>0And p(0,1)>0And p(2,1)>0And p(0,2)>0And p(1,2)>0And p(2,2)>0 map(xx,yy) = 33
            
            
         EndIf
      Next
   Next
End Function

Function CheckField(px,py)
   For x1=0To 2:For y1=0To 2:p(x1,y1)=0:Next:Next
   If CheckRange(px-1,py-1) Then p(0,0) = map(px-1,py-1)
   If CheckRange(px  ,py-1) Then p(1,0) = map(px  ,py-1)
   If CheckRange(px+1,py-1) Then p(2,0) = map(px+1,py-1)
   If CheckRange(px-1,py  ) Then p(0,1) = map(px-1,py  )
   If CheckRange(px  ,py  ) Then p(1,1) = map(px  ,py  )
   If CheckRange(px+1,py  ) Then p(2,1) = map(px+1,py  )
   If CheckRange(px-1,py+1) Then p(0,2) = map(px-1,py+1)
   If CheckRange(px  ,py+1) Then p(1,2) = map(px  ,py+1)
   If CheckRange(px+1,py+1) Then p(2,2) = map(px+1,py+1)
End Function

Function CheckRange(px,py)
   Return (px=>0And py=>0And px<MapWidth And py<MapHeight)
End Function




Edit(2):
So habs jetzt geschafft das man, egal wie man die punkte setzt, sie richtig verbunden werden...
user posted image


mfg ToeB

Das Spiel / Anfäge

Samstag, 9. Mai 2009 von ToeB

Ich hab noch nicht so wirklich drüber nachgedacht, wie das Spiel später aussehen soll, aber ich bin zu dem entschluss gekommen, das es sich um ein Jump'n'run - Shooter handeln soll.

Es soll alles sehr simple aussehen und trotzdem den spieler fordern. Dazu soll man später über Netzwerk oder Internet oder im einzelspieler gegen Bots mit seinem Team kämfen. Das Ziel ist, mit seinem Team, oder auch alleine, eine Burg zu zerstören / einnehmen (bin mir noch nicht ganz sicher , was findet ihr besser ?). Das ganze wird komplett in 2D programmiert.


Momentaner Stand :
Arrow TileEditor + Erste Testmap
Arrow Smiley Als spieler + 1 Waffe
Arrow Wenn man das Programm zum ersten map startet dann werden die bilder gedreht und in ein Image gespeichert. Dieses wird dann bei nächsteren Programmstarts geladen (ladezeit wird verkürtzt)
Arrow Laufen / springen sieht sehr gut aus
Arrow Framen unabhägiges Programm
Arrow Schießen
Arrow Particle Engine (Particle2D -> Siehe Codearchiv)
Arrow UDP Netzwerk Lib (-> Siehe Codearchiv)
Arrow Collision des Spielers mit der Map
Arrow Löschen der schüsse bei Collision mit der Map
Arrow TileMapScrolling
Arrow Man kann den smiliy jetzt in jede x-belibige farbe einfärben (auch die hände)
Arrow Zwei Burgen (rot / grün)
Arrow Wolken-Engine, die pausenlos wolken erzeugt, die dann im hinterggrund hin und her schweben
Arrow Grafiken alle Selbst gepixelt, mit paint ^_^'

So damit ihr auch so einen kleinen eindruck bekommt, ein Screenshot :
user posted image

mfg ToeB