Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

41

01.10.2009, 22:37

hmmm ...

Vieles ist im Vorfeld schon sehr genau deklariert, ich denke für erweiterte Dinge (XPs, Items, Quests usw.) kann man da einiges "vererben" und weiter verwenden. Im Grunde funktioniert das für jeden atm mit der Variante noch für jeden einzelnen. Also wer eine Quest annimmt nimmt diese nur für sich an. Man könnte somit aber arrangieren das man zusammen die Gegner verknüppeln kann, wobei das schon ziemlich unfair sein könnte da hier die "Lebensenergie" des Gegners eigendlich höher sein müsste, eine Berechnung für sowas (2, 3, 4 Spielern und mehr in einer Gruppe) wäre sicherlich in dem Fall nur vorteilhaft da sonst jeder einen Hieb macht und der Gegner fertig ist. Ziemlich unfair! Bei Gegnern (Monstern/Orcs ect.) verhält sich das einfach, sie greifen den an den sie als erstes im nächsten Bereich finden. Was nur logisch ist, du verteidigst dich ja auch erst einmal gegen den der dir am nächsten steht. Das mit dem Storyfaden, Inventar, Items als Belohnung ect. klärt sich ja von selber, alles was in der Welt vorhanden ist bleibt solange bis man es nimmt, das gild für jeden Spieler. Zumindest noch.

Aber darüber mache ich mir eher weniger Gedanken wenn ich ehrlich bin, 2 Leute in einem Spiel habe ich atm schon, bin aber erst am anfang, ist halt schwierig sich vorzustellen wie der Verlauf und Aufbau stattfinden muss damit zb die Animationen, Veränderungen des Mitspielers erst einmal für "den Spieler der vorm Monitor sitzt" sichtbar ist.

Das schlimme ist das scheinbar, das vermute ich aber nur, die letzte Animation mit dem Auslesen des Speichers mit übergeben wird, der Rest jedoch nicht. So habe ich mit pc1 und 2 Xardas im Turm angepeilt und für den jeweils anderen Pc sah man halt aus als ob man dauerhaft am Buchständer stünde und die Seiten umblättert, dieser Zustand war bleibend, selbst in einer Bewegung.

Auch kurios ist das Phänomen dass wenn pc2 aus dem Sichtfeld geht UND (ganz wichtig) in den nächsten Teil der Welt abhaut, dass er dann nicht mehr zu finden ist, auch wenn er sich wieder an den eigendlichen Start teleportiert wo der speicherpunkt gesetzt wurde. Man sieht also ein Übergang macht für diese Variante ggf. Probleme.

Im Moment bin ich jedoch erst einmal beschäftigt mit der Reaktion, Animation so das dieses Verschwinden erst einmal zur Nebensache werden muss. Eins nach dem Anderen und ggf. kommt mit dem einen auch gleich der Ansatz zur Lösung für Problem 2, 3 oder 4 zumindest war dies in der Vergangenheit oft bei mir so.

Roland

42

02.10.2009, 10:06

Unterstüzt dieses Devkit events?
Genauer gesagt, kannst du eine Funktion von dir aufrufen lassen sobald sich ein Spieler oder NPC bewegt?

Das wäre schonmal die Grundvoraussetzung!
Als nächstes müsste beim Annehmen einer Quest ein Event geworfen werden, damit du hier auch interagieren kannst.

43

02.10.2009, 12:53

hmmmm

@ chriss
Inwiefern zugreifen? Soweit ich es verstanden habe muss sowohl client als auch Server erst bestimmte Sources des Spiel besitzen muss um darauf zugreifen zu können. Atm schwebt man nur über den Boden und die Sprung/Fallanimation wird übergeben. Warum kann ich jedoch nicht einmal genau sagen. Habe selbst einige "Bewegungselemente" angefügt, bis jetzt wurden diese aber nicht verwendet. Ziemlich kurios das Ganze. Zumal ich einige Funktionen die wohl mit der Bewegung zu tun haben geklont und verändert habe um zu sehen ob etwas passiert. Wär ja schon ein Erfolg wenn mein Gegner eine Sitzen Animation verwenden würde.

Das mit dem Event, ich denke mal du zielst damit auf dieses Coop ab, also das beide etwas zusammen tun, muss auch verschoben werden.

Ich habe heute (gestern war das Inet ja leider weg somit keine Möglichkeit zu testen was mich zum Punkt bringt das es wohl dann auch per Internet ging) mal etwas testen können. Bischen springen hier, laufen da, verkloppen, mit anderen npcs interagieren und natürlich das Problem des "Verschwindens".

Bin hier zu folgenden Schlüssen gekommen:
Verschwinden: Wenn man sich zu weit aus dem Sichtbaren Bereich (sightValue=WERT 1-14 möglich) entfernt, auch wenn man nur einen Berg hinunter läuft, ist nach der Grenze des eingestellten Sichtbaren Bereiches schluss mit lustig. Der Npc verschwindet gänzlich, nicht einmal eine art Geist bleibt zurück. Mit Geist meine ich eine Art durchsichtigen Npc, ich denke jedoch das das nur ein Bug ist, in dem Fall war der Gegner noch vorhanden nur ebend nicht mehr ganz so physisch wie sonst xD Das bedeutet für mich aber das der Spieler nie wirklich "ein Zustand" der Welt wurde.

schlafen:
Auch zb das Schlafen funktioniert nicht, ganz klar es verändert den einen Zustand des Spielers der schläft so enorm das das Spiel nicht mehr synchorn funktionieren kann. Bei Spieler A ist es nun schon Mittags, bei Spieler B natürlich noch Morgens. Ich glaube Schlafen ist demzufolge nicht mehr wenn es jemals zur Fertigstellung käme. Um das noch etwas zu definieren, wenn Spieler A schläft, verschwindet Spieler B bei ihm, des weiteren kommt ein Fehler und das Spiel stürtzt ab. Spieler B sieht nur noch die leere Hülle von Spieler A, kann diese aber auch nicht angreifen/verletzen.

Gespräche:
Wenn Spieler A mit einem Npc interagiert (zb Xardas) reagiert dieser nur bei Ihm, bei Spieler B steht dieser Npc wie gewohnt am Buchständer und blättert fleissig Seiten um. Auch beim Schaf vor dem Turm, wenn Spieler A es angreift und verletzt oder umbringt, dann ist bei Spieler B trotzdem das Schaf an gewohnter stelle und futtert grünes, oder läuft seine waypoints ab. (mähh) xD Man sieht auch keinerleih Verletzung wenn Spieler A angegriffen wurde, weiss das Spieler B garnicht da scheinbar nur der erste Zustand behandelt wird und dieser ist halt nach dem Spawn 100% Lebensenergie.

Der Zustand ist also immer gleichbleibend bis der Spieler A/B die Sichtweite verlässt, da er sowieso nie einen Platz in der Welt hatte, verschwindet er einfach wieder.

Der Knackpunkt liegt glaube ich schon an der Verarbeitung ganz am Anfang, es darf nicht einfach eine Positionsberechnung stattfinden um "spawnen" zu lassen, sondern müsste definitiv einen Start geben. Wie bei Counterstrike zb Info_player_start welches der Server dann bekommen müsste und auf was der Client dann wiederrum zugreift. Ich weiss nicht ob dies per insert "wert" (pc_hero) at x,y,z funktionieren könnte, gehe aber nicht davon aus da der Spieler erneut kein richtiger Zustand würde. Der Start für Gothic selbst = vobname: Start_Gothic2
im 3ds eingetragen als: visual: Invisible_zcvobstartpoint.3ds

Man kann Ihn im Grunde bedenkenlos verschieben, ich hatte vor einiger Zeit (ca Anfang des Jahres) ja einiges getestet und ging davon aus das Skripte überarbeitet werden müssten. Ich schätze also darum kommt man nicht herrum.

Aber noch en Problem kam im Laufe der Tests, die Fehlermeldung hierzu:
Auf das verworferne Objekt kann nicht zugegriffen werden.
Objektname: "System.Net.Sokets.NetworkStream".

Uminös und sehr Problematisch ist auch der Fall: Verliert man die Verbindung zum Server dann kann man nicht einfach reconnecten, um den Zustand wieder her zu stellen muss man das ganze Prozedere mit den beiden clienten erneut durchgehen, der server selbst ist egal, er arbeitet für sich und verarbeitet auch im Grunde nur diese Positionsabänderungen. Zb steht im Code dazu folgendes:

Classes auszug:

Quellcode

1
2
3
4
5
6
7
8
9
Public Sub New(ByVal name As String, ByVal x As Single, ByVal y As Single, ByVal z As Single, ByVal bodystate As Integer, ByVal bs_flag_interruptable As Integer, ...
player.instance += 1
        Me.name = name
        Me.x = x
        Me.y = y
        Me.z = z
        Me.bodystate = bodystate
        'neu bstate
        Me.BS_FLAG_INTERRUPTABLE = bs_flag_interruptable 'from bodystates.d


ircbot.vb

Quellcode

1
2
3
4
5
6
7
8
Sub OnPublicMsg(ByVal user As UserInfo, ByVal channel As String, ByVal message As String)
        If message = "!serverinfo" Then
            conny.Sender.PublicMessage(channel, "ServerInfo:")
            conny.Sender.PublicMessage(channel, "Player1: " & player1.name)
            conny.Sender.PublicMessage(channel, "X: " & player1.x & " Y: " & player1.y & " Z: " & player1.z)
            conny.Sender.PublicMessage(channel, "Health: " & player1.health)
        ElseIf message.Contains("!kick") And user.Nick = master Then
            conny.Sender.PublicMessage(channel, "wtf kick? i would like 2 do it but DaRk didn't insert correct code!")


Mir ist gerade aufgefallen das ich einige übergaben übersehn habe, ggf funktionierte das gerade doch mit dem laufen, habe nur vergessen es per ircbot zu übergeben. Schaun wir doch mal.
Aber soviel erstmal dazu ich hoffe man konnte einigermassen folgen.

Bei Fragen, einfach fragen, antworte später!

Roland[/code]

Werbeanzeige