Planet Battle 3

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
Benutzeravatar
ralle
Beiträge: 88
Registriert: 29.11.2004 17:50
Wohnort: Berlin

Re: Planet Battle 3

Beitrag von ralle »

Kann es sein, dass der Key "a" zum auswählen aller Einheiten nicht funktioniert? Oder ist das nen Fehler in deiner Anleitung?

MfG
Ralph
Benutzeravatar
kswb73
Beiträge: 319
Registriert: 04.02.2008 16:51
Kontaktdaten:

Re: Planet Battle 3

Beitrag von kswb73 »

Ups, hatte ich übersehen. Ist jetzt eingebaut.
Windows XP: PB 4.31, PB 4.4, PB 4.51
Open Suse 11.2: PB 4.4
°°°
Beiträge: 59
Registriert: 05.11.2008 17:45

Re: Planet Battle 3

Beitrag von °°° »

Hi

dein Spiel ist wirklich super, aber könntes du vielleicht noch sound einfügen das würde das ganze perfektionieren
Ansonsten währe eine Multiplayer funktion natürlich auch wünschenswert.

Tolles spiel weiter so.
PureBasic 4.51

Support this Game:_______________________Mein Buch:
http://www.interstellarmarines.com/_______http://www.epubli.de/shop/showshopelement?pubId=3477
teejex
Beiträge: 44
Registriert: 30.03.2009 17:55
Computerausstattung: PB4.40 Pro
C++: MinGW :)
Java: Eclipse :)
Notepad++ :)
--
Notebook/eher Mobile Workstation :D : Q9800 - nVidia - 4GB Ram - 500GB HD

Re: Planet Battle 3

Beitrag von teejex »

Hi

bin dabei, einen Multiplayer clone in C++ zu schreiben.
Nun stellt sich mir die Frage:
Wie übermittel ich die Daten am besten - sodass möglichst wenig Daten übertragen werden müssen,
denn, wenn man ein paar hundert oder tausend Schiffe herumjagt, dürfte das relativ viel an Daten werden.
-
Überlegt hatte ich mir vorerst,
die Schüsse nur einmal zu übermitteln - die Richtung ändert sich ja nicht mehr - der Computer kann lokal berechnen, wie der Schuss weiterfliegt.
Wann und wie oft ich die Raumschiffkoordinaten übermittel ist wohl das Hauptproblem.
Und wie Events (Zerstörung eines Schiffes/Schusses) übertragen werden - oder ob ich mich darauf verlassen soll,
dass die Computer das eigenständig GLEICH berechnen.
-
Hat jemand von euch Ideen, wie man das am besten Umsetzt?
-
Kurz noch ein paar Infos zum Projekt:
Bis jetzt arbeite ich mit der SDL für grafische Ausgaben.
Time-Based
Für den Internet "verkehr" würde ich vermutlich selbst ne Klasse schreiben.
Bis jetzt sollte das ganze auch auf Linux laufen ... entwickeln tu ich momentan auf Windows

Stand 26.3.2010
- Schiffe lassen sich markieren(Rahmen)
- Zielort per rechtsklick für markierte Schiffe zuweisbar (Formation auswählbar: Quadrat,Kreis(größe definierbar),Horizontale bzw. Vertikale Linie)
- Schiffe schiessen auf gegnerische Schiffe - und diese Feuern zurück -> Nach ein paar Treffern: Tod
- Auf der Map kann man manövrieren
ToDo: MAP-Format, Planeten, Multiplayer

Für Kritik bin ich zu haben :)
Ich hoffe mal es stört dich nicht ,dass ich versuche dein Projekt nachzuahmen kswb73 ?

MfG
Teejex

PS: Link zum Download kommt gleich
Edit: Hier isser:

http://upload.alexander-n.de/=NTAuMTI2OTYwMjA0NA== Version L8
http://upload.alexander-n.de/=NTEuMTI2OTYwMzY3MA== Version L9

http://upload.alexander-n.de/=NTIuMTI2OTYwNDkyMw== Version L10
Edit2: Wenn ich für das Projekt nen eigenen Thread aufmachen soll - gebt bitte Bescheid :)
Edit3: @Stargate: Jo, ist time-based
Zuletzt geändert von teejex am 26.03.2010 15:18, insgesamt 1-mal geändert.
我是单洋。
我是德国人。
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Planet Battle 3

Beitrag von STARGÅTE »

teejex hat geschrieben:Wie übermittel ich die Daten am besten - sodass möglichst wenig Daten übertragen werden müssen,
denn, wenn man ein paar hundert oder tausend Schiffe herumjagt, dürfte das relativ viel an Daten werden.
-
Überlegt hatte ich mir vorerst,
die Schüsse nur einmal zu übermitteln - die Richtung ändert sich ja nicht mehr - der Computer kann lokal berechnen, wie der Schuss weiterfliegt.
Wann und wie oft ich die Raumschiffkoordinaten übermittel ist wohl das Hauptproblem.
Und wie Events (Zerstörung eines Schiffes/Schusses) übertragen werden - oder ob ich mich darauf verlassen soll,
dass die Computer das eigenständig GLEICH berechnen.
-
Hat jemand von euch Ideen, wie man das am besten Umsetzt?
Nun, von jedem einzelnen Schiff ununterbrochen die Position zu senden ist total übertrieben.
Hier mal ein Vorschlag von mir:
- Das wichtigste ist erst mal das ALLES (jede Bewegung, jede Bauphase, usw) nicht Framebasieren läuft sonden wirklich in echten Sekunden.
Soll heißen wenn genau 1 Sekunde vergangen ist, dann ist ein schiff auch wirklich genau 400Pixel geflogen, egal ob der jenige 120FPS oder 20FPS hatte.

Wenn das der Fall ist, dann brauch man nur noch Aufträge durch das Netz schicken.
- Es wird also nur übermittelt, ob irgendwer ein neuen Schiff hat, und wo es steht.
- Hat jemand ein Schiff woanders hingeschickt (nur zielkoordinaten)
- Hat jemand das Feuer eröffnet (also auch hier nicht jeden Schuss, sondne nur ob er angreift oder nicht)
denn da alles gleichschneell läuft schießen alle in der gleichen Frequenz ihre Waffen ab, welche dnan auch lokal gleich schnell fliegen.
- Falls es doch zu einer asynkronität kommt, dann sollte zB das Ereignis, ob ein Schiff explodiert oder nicht, von dem PC geschickt werden wo es "zuerst" gekillt wurde, sodass keine Geisterschiffe rumfliegen!
Aber gerade weil man bei dem spiel sehr viele schiffe hat, ist es im Deteil egal, ob Schiff X, vllt nicht bei (100,500) steht sondern bei (101,501) ... denn weil bei neuen Bewegungen immer Zielkoordinaten übertragen werden, wir die abweichung nicht größer ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
kswb73
Beiträge: 319
Registriert: 04.02.2008 16:51
Kontaktdaten:

Planet Battle 3 Multiplayer

Beitrag von kswb73 »

Ich hab auch mal an einem Multiplayer geknobelt, aber nur einen kleinen Test realisert.

Raumschiffkoordinaten würde ich nur am Anfang schicken. Da du Zeitbasierend arbeitest sollten beide Rechner sehr Syncron sein. (es sei den die Daten brauchen lange zum versenden). Du musst also legendlich die Ziele schicken.

Dabei solltest du die Pakte möglichst klein halten.
Zum Beispiel:
Wenn du Schiffe verschicktst, gib an welche Schiffe verschickt werden und das Ziel (wo der Spieler hingeklickt hat) und die Formation (Kreis, Linie, usw.). Die eigentliche Ziele können dann lokal berechnet werden. (Siehe auch STARGÅTE)
Vielleicht findest du noch irgendwo gute verkleinerungs Algorithmen.

Bei den Schüssen würde ich eventuell sogar eine direkte Flugbahn wie bei STARGÅTEs Dune 2077 verwenden. Sprich also die Schüsse fliegen auf ein Schiff zu und können nichts anderes Treffen. Damit würdes du eine Menge an Daten sparen. Außerdem musst du dir so weniger Sorgen um falsche Schiffsposition beim anderen PC machen. Es fällt gar nicht auf dass das Raumschiff 20 Pixel weiter rechts ist. Bei einer Schussberechnung leider schon.

Des weiteren wünsch ich dir viel Erfolg. Ich bin schon gespannt was aus deinem Projekt wird. Wenn du Fragen hast, dann Frag ruhig. Ich hab bei Planet Battle 1 ja auch Dr. Shreks =QONK= nachgeahmt.

PS: Ein Problem wird noch deine Framerate sein. Bei tausenden von Schiffen geht die auch irgendwann in den Keller.
Windows XP: PB 4.31, PB 4.4, PB 4.51
Open Suse 11.2: PB 4.4
teejex
Beiträge: 44
Registriert: 30.03.2009 17:55
Computerausstattung: PB4.40 Pro
C++: MinGW :)
Java: Eclipse :)
Notepad++ :)
--
Notebook/eher Mobile Workstation :D : Q9800 - nVidia - 4GB Ram - 500GB HD

Re: Planet Battle 3

Beitrag von teejex »

Hi

dankeschön schonmal für die Antworten
hatte mich schon gewundert, warum man von dir nichts mehr bezüglich PlanetBattle hört ^^

Ein paar Fragen - nichtnetzwerkspezifisch - hätte ich wohl:
Nämlich die den durchmesser der Schiffe, wie schnell die Schiffe und Schüsse sind (in Pixel/Sekunde oder ählnicher Geschwindigkeitsangabe).

Achja: Hatte leider vergessen, zu schreiben, dass das ganze schon TimeBased is - steht jetzt aber drin ^^
---
Ich werd mich bald mal an die Netzwerkkommunikation machen.
Noch eine Frage: Würdet ihr einen Server machen, der die Daten von beiden Spielern annimmt und dann weiterleitet - oder soll ein Spieler den Server mimen? Wäre vermutlich schneller - aber schwieriger zu Programmieren.

Grüße
Teejex
我是单洋。
我是德国人。
Benutzeravatar
kswb73
Beiträge: 319
Registriert: 04.02.2008 16:51
Kontaktdaten:

Re: Planet Battle 3

Beitrag von kswb73 »

Äh, redest du von Planet Battle 1, 2, 3 oder 4 (nie fertig geworden). Ist eigentlich völlig egal welche Werte du nimmst. Solltest nur eben darauf achten dass das ganze nich zu schnell, langsam, groß oder klein ist. Außerdem kannst du ja auch eigene Ideen integrieren.

Planet Battle 1
Größe Schiffe: 5*5 (sollte man nicht machen)
Größe Planeten: 51*51 (sollte man auch nicht machen)
Schiffe Geschwindigkeit: 300
Schüsse Geschwindigkeit: Gabs noch nicht

Planet Battle 2
Größe Schiffe: 10*10 (sollte man nicht machen)
Größe Planeten: 50*50 (sollte man auch nicht machen)
Schiffe Geschwindigkeit:240 (Variable)
Schüsse Geschwindigkeit: Direkttreffer

Planet Battle 3
Größe Schiffe: 10*10 (siehe oben)
Größe Planeten: 100*100 (sollte man auch nicht machen)
Schiffe Geschwindigkeit: 160
Schüsse Geschwindigkeit: 640

Planet Battle 4 (nie vollendet)
Größe Schiffe: 16*16
Größe Planeten: 128*128
Schiffe Geschwindigkeit: 312.5-666,666... (unterschiedliche Schiffstypen)
Schüsse Geschwindigkeit: 1000

Geschwindigkeit in Pixel pro Sekunden


Ich würde Spiel und Server in einem machen. Du hast nur zwei Spieler, es hat also keinen Sinn den Server von einer dritten Person zu hosten. Außerdem musst du mit einem extra Server vieles doppelt berechnen und brauchst deutlich mehr Speicher. Wenn du beidest verbindest sparst du dir einiges an Arbeit und es wird nicht viel schwerer als den entsprechenden Client zu schreiben. Vom Grundprinzip ist nur das Senden und Empfangen vertauscht.


Bevor du Fragst, ich würde Planet Battle 4 eh noch einmal von vorne anfangen, da ich doch einiges sehr ungeschickt gelöst habe.
Windows XP: PB 4.31, PB 4.4, PB 4.51
Open Suse 11.2: PB 4.4
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Planet Battle 3 Multiplayer

Beitrag von STARGÅTE »

kswb73 hat geschrieben: Bei den Schüssen würde ich eventuell sogar eine direkte Flugbahn wie bei STARGÅTEs Dune 2077 verwenden. Sprich also die Schüsse fliegen auf ein Schiff zu und können nichts anderes Treffen
Grab doch nicht diese alten Links aus ^^

Aber ich muss da leider wiedersprechen, bei DUNE 2077 waren die Schüsse auch echte Teilchen die flogen, welche also durch aus das eigentliche Zeil verfehlen konnten bzw, irgendwo anders einschlagen konnten.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Re: Planet Battle 3

Beitrag von Sauer-RAM »

Also aufm Netbook gehts leider nicht....
Es öffnet sich nichts und es kommt nur die Standart Fehlermeldung von Windows... Ich schätze das liegt an dem Abartigen Format des Bildschirms.
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Antworten