Tickbasiertes Spiel

Status
Nicht offen für weitere Antworten.
G

Gauo

Gast
Hi, ich will eine art Kreuzung zwischen Echtzeit und Rundenbasiertem Netzwerk- Strategiespiel verwirklichen.
Mit Kreuzung mein ich eine Art Tick system wie bei browsergames.
Es soll innerhalb eines Ticks z.B 5minuten alle bauaufträge flotten befehle etc. gegeben werden die dann im nächsten Tick starten und dann irgendwann mit einem anderen Tick enden.
Soweit zur Idee, aber wie setzt man das um?...kann man das irgendwie mit einer Runnaable bzw einem Timer machen der der alle 5minuten ausgeführt wird und sich alle Task ansammeln bzw hinzugefügt werden und sobald der timer x mal aufgerufen wurde dieses ausführt?...kann mir das als code gar net vorstellen, bzw wie ich das möglichst geschickt umsetze(u.a. Ressourcen sparend)

ich hoffe ihr könnt mir helfen bzw ich konnt mich gut genug ausdrücken ^^
 

Campino

Top Contributor
Du brauchst eine List mit neuen Tasks und einen Timer, der den Tick auslöst.

Für die Netzwerkarchitektur würde ich empfehlen, dass einer der Rechner den Tick auslöst und ein Signal an die anderen sendet, damit das synchron läuft.

Ressourcensparender wird es kaum gehen.
 
G

Gauo

Gast
ah, k....ich fasse deine Idee so auf
ich mach eine doppelte Liste<Liste<Task>> sozusagen in der der index i der ersten Liste den nächsten iten Tick beschreibt und die ansammlungs an Task die ausgeführt werden soll wenn der Timer das nächste mal seine dings methode aufruft...
noch ne frage.
Ich hab eigentlich keine Ahnung von Netzwerk programmierung und hab das Spiel bisher(Konzept und Game Klassen struktur von ingame Objekten) nicht darauf ausgelegt. Gibt es Tutorials die mir verklickern was ich zu beachten hab und sowas?
 

Campino

Top Contributor
ähm...warum brauchst du den eine doppelte Liste? Die Liste enthält alle Tasks, die noch zu tun sind, dabei speichert jeder Task, wann er ausgeführt werden soll, z.B. nach 5 Ticks. Bei jedem Tick wird der Task nun "angetippt", woraufhin er seinen Zähler um eins runtersetzt, wenn der Zähler 0 ist, wird der Task ausgeführt. Dazu brauchst du noch eine Liste.

Performanter geht es, wenn du mit System.currentTimeMillis() die Systemzeit nimmst, was dazuaddierst und nach dieser Zeit feststellst, wann der Task ausgeführt werden soll.

Was das Netzwerk betrifft:
Am einfachsten ist eine Client- Server- Architektur. Dabei kann die Server- Applikation auch auf demselben Rechner wie ein Client laufen.
Überleg dir, welcher Computer welche Informationen wie oft braucht. Informationen, die ständig von vielen Rechnern gebraucht werden, kommen auf den Server. Informationen, die für einzelne Rechner wichtig sind und nur selten von anderen gebraucht werden, bleiben im Client. Sie müssen im "Notfall" von den anderen Rechnern dort nachgefragt werden.
Jetzt musst du nurnoch sicherstellen, dass alle Rechner immer dieselben Informationen haben. Die informationen, die auf dem Client selbst sind, aktualisiert der Client, die, die im Server sind, aktualisiert der Server. Jetzt muss nurnoch der Server geänderte Werte an die Clienten weitergeben und die Clienten geänderte Werte, die Server oder andere Clienten brauchen, dorthin geben.

Wichtig: Achte darauf, dass Daten, die an mehreren Stellen gespeichert sind, wenn sie irgendwo geändert werden an ALLEN Stellen geändert werden.
Beispiel: In einem Ego- Shooter bewegt sich ein Spieler. Stell dir vor, was passiert, wenn einer der Computer eines anderen Spielers das nicht erfährt und den Spieler noch an der alten Position vermutet und auch dort darstellt.

PS: Am einfachsten ist es, wenn ALLES auf dem Server liegt, der Client nach jedem Tick alle für ihn relevanten Daten, die sich geändert haben, neu übertragen bekommt und ALLE Befehle des Spielers sofort an den Server überträgt. Dann läuft die ganze Spiellogik auf dem Server, du hast aber auch massig Datenverkehr im Netzwerk.
 
G

Gauo

Gast
Campino hat gesagt.:
ähm...warum brauchst du den eine doppelte Liste? Die Liste enthält alle Tasks, die noch zu tun sind, dabei speichert jeder Task, wann er ausgeführt werden soll, z.B. nach 5 Ticks. Bei jedem Tick wird der Task nun "angetippt", woraufhin er seinen Zähler um eins runtersetzt, wenn der Zähler 0 ist, wird der Task ausgeführt. Dazu brauchst du noch eine Liste.

Performanter geht es, wenn du mit System.currentTimeMillis() die Systemzeit nimmst, was dazuaddierst und nach dieser Zeit feststellst, wann der Task ausgeführt werden soll.
thx fürs die Tipps fürs Netzwerk, aber hier schnall ich die Performantere variante nicht mehr -.-...
wär zum ersten vorschlag das ich das immer einen runtersetze meine nicht einfacher?...dann hab ich doch eine art Warteschlange, wo ich nicht am Ende des Ticks alle durchgehen brauch sondern nur die an Position 0 ausführe und dann "den Kopf abschlage"
...hm...ich frag mich nun aber ob das wirklich geschickter ist, da ich ja im spiel die prozesse auch anzeigen muss, da ja ein bauauftrag auch abgebrochen werden können sollte, bzw angezeigt werden sollte wann er endet. Genauso bei den Forschungen und Flotten befehlen -.-...
argh....verwirrend -.-
 

Campino

Top Contributor
Ein Gebäude soll gebaut werden. Die Bauzeit beträgt 5 Ticks. Es muss also in die fünfte Liste in der Liste, dazu musst du aber erstmal fünf Listen reinpacken. Wenn in den vier Ticks dazwischen nichts passiert, schwirren da 4 leere Listen durch die Gegend, das ist absoluter Unsinn. Mit meiner Variante brauchst du die nicht.
Außerdem sparst du dir den Code um festzustellen ob schon genug Listen in deiner Liste sind und um die Zusätzlichen einzufügen. Alles in allem ist das sogar einfacher. Wenn du sowieso anzeigen möchtest, wie lange der Bauauftrag noch braucht, kannst du da einfach den Tick- Zähler aus meiner Variante anzeigen, in deiner musst du noch herausfinden, in welcher Liste der Bauauftrag ist.
Und EINE Liste nach Bauaufträgen oder was auch immer, die angezeigt werden sollen, zu durchsuchen ist auch einfacher, als in was weiß ich wievielen Listen zu suchen.
Das Herauswerfen von ausgeführten Aufträgen, ist auch ganz einfach, in deiner Variante entfernst du mit der remove()- Methode die Java- Listen ja sowieso haben die erste Liste, in meiner mit derselben Methode die abgelaufenen Aufträge.
 
G

Gauo

Gast
hm....noch eine Frage.
Ich habs jetzt so Umgesetzt, aber wie komm ich in einer java.util.Timer Klasse an die Zeit die noch vergeht bis der Task wieder ausgeführt wird?...oder muss ich von dem Timer die frequenz höher stellen(also auf jede sekunde) und nur wenn Tickzeit vergangen ist wird run wirklich ausgeführt...anonsten passiert nichts, höchstens das ein Zähler hochgezählt wird...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
xFearofdarkness Feinde überlappen sich in Java Spiel Spiele- und Multimedia-Programmierung 3
ItundMathe1994 TicTacToe Spiel programmieren Spiele- und Multimedia-Programmierung 2
JEP1 Hilfe bei Spiel Spiele- und Multimedia-Programmierung 1
P Pokemon Spiel Funktioniert nicht ? Spiele- und Multimedia-Programmierung 3
Leon.tr3x Mein erstes Programm/Spiel Spiele- und Multimedia-Programmierung 10
O Texas Hold'em Poker als Online-Spiel mit Freunden Spiele- und Multimedia-Programmierung 5
Drachenbauer Speicher-Tool für ein Spiel schreiben Spiele- und Multimedia-Programmierung 13
M Spiel Mühle-Programmierung Java Spiele- und Multimedia-Programmierung 9
Excess Spiel abzugeben Spiele- und Multimedia-Programmierung 1
I Superhelden - Spiel Spiele- und Multimedia-Programmierung 14
E Hauptmenü und Spiel ???? Spiele- und Multimedia-Programmierung 2
L Sound in Java Spiel Spiele- und Multimedia-Programmierung 5
R Interaktives Spiel Spiele- und Multimedia-Programmierung 5
L Spiel im Editor testen Spiele- und Multimedia-Programmierung 4
Jackii dispatchUncaughtException in Quiz Spiel mit GUI Layout Spiele- und Multimedia-Programmierung 6
D Textbasiertes Spiel Spiele- und Multimedia-Programmierung 8
K Android Spiel Programmieren Spiele- und Multimedia-Programmierung 6
L BrickBreaker Spiel Spiele- und Multimedia-Programmierung 3
A Spiel Figur ansprechen und bewegen Spiele- und Multimedia-Programmierung 3
it_is_all Dialogbox im Spiel - Text in Blöcke aufteilen Spiele- und Multimedia-Programmierung 4
F Koordinieren und Essen von Snake - Spiel Spiele- und Multimedia-Programmierung 14
G Entity Verwaltung in einem 2D Spiel Spiele- und Multimedia-Programmierung 1
E Möchte Spiel Programmieren Spiele- und Multimedia-Programmierung 7
S Connect6 Spiel - Code in ei Spiele- und Multimedia-Programmierung 2
A Spiel nach Abfrage beenden oder neustarten Spiele- und Multimedia-Programmierung 1
G Welten Generierung 2D Spiel Spiele- und Multimedia-Programmierung 4
G Java 2D Spiel mit LWJGL verbinden Spiele- und Multimedia-Programmierung 1
N Problem mit 2D Spiel Spiele- und Multimedia-Programmierung 17
T Probleme bei "Pixel-Fighting"-Spiel: Unausgewogene Mannschaften??? Spiele- und Multimedia-Programmierung 4
R Pong Spiel Problem Spiele- und Multimedia-Programmierung 1
L Coordinate Space JavaFX 2d Spiel Spiele- und Multimedia-Programmierung 0
C Vier Gewinnt Spiel Programmiertipp Spiele- und Multimedia-Programmierung 11
N Jump and run Spiel - wo anfangen / weitermachen? Spiele- und Multimedia-Programmierung 11
K Spiel zum zuordnen von Dienstgraden und Dienstgradabzeichen Spiele- und Multimedia-Programmierung 5
M Textbasiertes Spiel programmieren Spiele- und Multimedia-Programmierung 4
T 2d-Spiel Licht Spiele- und Multimedia-Programmierung 5
S Jump 'n' Run-Spiel Kollisionserkennung Spiele- und Multimedia-Programmierung 3
T Spiel rendern Spiele- und Multimedia-Programmierung 2
Grevak Sounds im Spiel Spiele- und Multimedia-Programmierung 5
B Fehlerhafte Mob Bewegungen in Tower Defense Spiel Spiele- und Multimedia-Programmierung 2
F Spiel ähnlich wie SimCity/o.ä programmieren Spiele- und Multimedia-Programmierung 5
X Erklärung zu einem Tic Tac Toe Spiel Spiele- und Multimedia-Programmierung 1
I Spectator Modus für Spiel ähnlich zu Terraria Spiele- und Multimedia-Programmierung 8
I Textbasiertes Spiel - Umsetzungsfrage & Schleifen Problem Spiele- und Multimedia-Programmierung 26
M Kollisions abfrage bei 3D spiel? Spiele- und Multimedia-Programmierung 12
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Spiele- und Multimedia-Programmierung 1
P [Spiel]Welche Bilder sind gleich Spiele- und Multimedia-Programmierung 2
E GUI zum Spiel hinzufügen Spiele- und Multimedia-Programmierung 19
S 2D Spiel - Physics Spiele- und Multimedia-Programmierung 16
S 2D Spiel "Der Sprung" Spiele- und Multimedia-Programmierung 7
A 2D Spiel ohne Tiles Spiele- und Multimedia-Programmierung 10
V welche vorgehensweise beforzieht ihr bei einfachem Quizz Spiel ? Spiele- und Multimedia-Programmierung 4
S Quaxli's Heli Spiel läuft nicht nach Plan Spiele- und Multimedia-Programmierung 2
G Methode sleepen während das Spiel weiterläuft Spiele- und Multimedia-Programmierung 3
T Spiel Überprüfung Spiele- und Multimedia-Programmierung 3
P Spiel laggt nach unbestimmter Zeit tierisch. Spiele- und Multimedia-Programmierung 27
S Hilfe bei Spiel Spiele- und Multimedia-Programmierung 6
B Hauptmenü für Spiel Spiele- und Multimedia-Programmierung 1
W Spiel ist langsam/laggt Spiele- und Multimedia-Programmierung 18
J Ascii Spiel Spiele- und Multimedia-Programmierung 1
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
O Vollständige Musik in Spiel einbauen (wav - Format) Spiele- und Multimedia-Programmierung 8
Y Quiz Spiel Spiele- und Multimedia-Programmierung 1
J Conways Spiel des Lebens nachprogrammiert Spiele- und Multimedia-Programmierung 1
B Spiel Programmieren, die Anfänge Spiele- und Multimedia-Programmierung 6
D [OpenGL] Spiel in der Art von Age of Empires Spiele- und Multimedia-Programmierung 4
lord239123 suche Graphiker für ein Pokemon-Spiel Spiele- und Multimedia-Programmierung 6
S Spiel installeren lassen und organisieren Spiele- und Multimedia-Programmierung 3
J Lichtupdate in tile-basiertem Spiel Spiele- und Multimedia-Programmierung 4
P Erstes Spiel (Strategie) Spiele- und Multimedia-Programmierung 31
J Mein erstes Spiel [Spielevorstellung] Spiele- und Multimedia-Programmierung 2
Bananabert Spiel Renderer Images und Strings Spiele- und Multimedia-Programmierung 4
N Spiel Menü error ! Spiele- und Multimedia-Programmierung 5
S Anfangsmenü mit Spiel verknüpfen Spiele- und Multimedia-Programmierung 16
S Spiel ruckelt trotz 50 fps Spiele- und Multimedia-Programmierung 16
D Spiel-Bilddaten auswerten Spiele- und Multimedia-Programmierung 7
Creylon [LWJGL] Spiel Exportieren Spiele- und Multimedia-Programmierung 2
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
Devil0s Spiel laggt trotz 90 FPS (bei der Anzeige) Spiele- und Multimedia-Programmierung 9
N Webanwendung als eine Art Spiel Spiele- und Multimedia-Programmierung 8
L Korrekte Darstellung von Wasser in 2D Spiel Spiele- und Multimedia-Programmierung 4
F Ideen für spiel Spiele- und Multimedia-Programmierung 4
J wohin mit der Logik des Spiel Spiele- und Multimedia-Programmierung 2
R Experimente mit Quaxlis Spiel Spiele- und Multimedia-Programmierung 12
W Spiel-Grundlagen selbst austüfteln: Kollisionen? Spiele- und Multimedia-Programmierung 3
Kenan89 Java 2D Spiel Spiele- und Multimedia-Programmierung 39
M Automaten Spiel Spiele- und Multimedia-Programmierung 27
J Tic tac toe spiel Neustart Spiele- und Multimedia-Programmierung 5
S 2D Spiel im Vollbild langsamer als im Fenster Spiele- und Multimedia-Programmierung 11
A TicTacToe Spiel Spiele- und Multimedia-Programmierung 3
S Verbesserungvorschläge Spiel Z Spiele- und Multimedia-Programmierung 31
S Spiel abbrechen Spiele- und Multimedia-Programmierung 3
J Greenfoot "Little Crab" Spiel Erweiterungen Spiele- und Multimedia-Programmierung 6
P Spiel HUD erstellen Spiele- und Multimedia-Programmierung 6
E Spiel neustarten Spiele- und Multimedia-Programmierung 4
S Aufbau von Klassen für Spiel Spiele- und Multimedia-Programmierung 13
A Grundlagensuche für Spiel Spiele- und Multimedia-Programmierung 8
V Basisprinzipien Breakout-Spiel Spiele- und Multimedia-Programmierung 8
E Spiel startet nach exportieren nicht Spiele- und Multimedia-Programmierung 7
Gossi Erweiterung von Quaxlis Heli-Spiel Spiele- und Multimedia-Programmierung 16

Ähnliche Java Themen

Neue Themen


Oben