AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL Online Spiel! Zeit Problem!

Ein Thema von Torley · begonnen am 17. Jun 2008 · letzter Beitrag vom 18. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Torley

Registriert seit: 24. Jan 2008
Ort: Freudenberg
39 Beiträge
 
Delphi 6 Professional
 
#1

MySQL Online Spiel! Zeit Problem!

  Alt 17. Jun 2008, 14:05
Moin,

Ich werd bald meine Ausbildung als Fachinformatiker für Anwendungsentwicklung anfangen!
Um schonmal ein wenig zu üben will ich ein Online Spiel mit Delphi basierend auf eine MySQL Datenbank schreiben.
Es vorerst ganz schlicht sein mit wenig funktionen.

Jedoch hab ich eine Denksperre im Kopf und hab keinen schimmer wie ich den Faktor Zeit richtig umsetz!
Das heißt:
Wenn der Spieler ein Gebäude baut und das Spiel ausmacht, soll es trotzdem in der datenbank als fertig dargestellt sein damit mögliche angreifer es auch als fertig sehen. Zusätzlich sollen die Rohstoffe die man durch dieses Gebäude bekommt zusammen mit den normalen rohstoffen auch sichtbar sein wenn ein angreifer oder gar der spieler selbst wieder kommt.
Wenn ich die Rohstoffe im Programm zb mit einem Timer erhöhe, werden sie nicht weiter erhöht wenn der benutzer offline geht! Das heißt man bekäme nur Rohstoffe wenn das Programm an wär!

Bis jetzt hab ich nur das login realisert.
Es gibt eine tabelle in der alle user stehen! jeder user hat dann eine weitere tabelle die die id als namen hat!
Ich bin mir nicht sicher ob diese variante schnell ist, weshalb ich auch hier vorschläge bräuchte!
jedoch ist das zeit problem wichtiger!


Ich hab daran gedacht die Zeit (datum) es ausloggens in die datenbank zu schrieben! Wenn nun wemand auf die daten zugreift bei einem angreifen, wir in einer Prozedure im Programm die fehlenden Rohstoffe von den Datum bis zu dem Zeitpunkt es neueinloggens oder spionierens nachgerechnet! Dann hat man jedoch wieder das problem mit den dazugebauten gebäuden!

Als vorbild für dieses Programm dient das spiel spaceinvasion! Es soll eine Art demo werden in der man den besten anfang testen kann!

Ich freu mich über jeden lösungsansatz!

Achja ich benutze DirectMySQL!

mfg Torley
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: MySQL Online Spiel! Zeit Problem!

  Alt 17. Jun 2008, 14:20
hi,

du musst doch eigentlich nur den Zeitpunkt der jeweils letzten Aktion festhalten.

BeispielAblauf:

Spieler Angos fängt mit dem Spiel an
08:00 DB-Eintrag: Spieler Angos Startressourcen 2000
08:00 DB-Eintrag: Spieler Angos Ressourcen/Stunde 200
08:00 SPieler Angos baut/erweitert Ressourcensystem für 1500 Ressourcen
08:00 DB-Eintrag: Spieler ANgos Ressourcen 500
08:00 DB-Eintrag: Ressourcensystem fertiggestellt um 10:00
10:00 Ressourcensystem fertiggestellt.
10:00 DB-Eintrag: Ressourcen Spieler ANgos = 500 + 2 * 200 = 900
10:00 DB-Eintrag: Spieler Angos Ressourcen/Stunde 300
...
...



Das ist natürlich nur ein grobes System. Du musst halt darauf achten, wenn sich das Einkommen je Stunde erhöht, einmal den Wert wegzuspiechern. Ansonsten Einfach den Wert errechnen

Gruß

Angos
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: MySQL Online Spiel! Zeit Problem!

  Alt 17. Jun 2008, 14:25
Du musst serverseitig ein Programm laufen lassen. Nicht nur während ein Anwender angemeldet ist. Das ist dann die große Herausforderung. Denn Browserspiele haben leicht mehrere hundert Spieler, und da den Server nicht unnötig zu belasten ist eine Kunst.

Ich schau mal ob ich was weiterführendes zu dem Thema finde.

Und das von Angos hört sich auch gut an

Edit: Angos Methode hat einiges für sich. Du sparst Dir tatsächlich einen Serverprozess und es ist eigentlich ziemlich einfach. Beim Login eines Spielers errechnest Du einfach aufgrund der Logs den aktuellen Resstand. Sobald ein fremder Spieler auf diesen Spieler "zugreift" (per Angriff, Spionage, was weiss ich) musst Du halt auch aktualisieren. Ziemlich cool.

Edit2: Genauso machst du das auch mit Gebäuden, Einheiten, Forschungen etc.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Torley

Registriert seit: 24. Jan 2008
Ort: Freudenberg
39 Beiträge
 
Delphi 6 Professional
 
#4

Re: MySQL Online Spiel! Zeit Problem!

  Alt 17. Jun 2008, 15:22
ich denk die erste idee ist einfacher, weil zur zeit der server nur auf meinem pc lokal ist und ich will ja ncht andauernt ein programm am laufen haben!

das heißt ich muss jetzt eine weitere tabelle für jeden spieler haben wo die rohstoffe und die gebäudeproduktion drinn stehen!

Torley
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: MySQL Online Spiel! Zeit Problem!

  Alt 17. Jun 2008, 15:28
Zitat von Torley:
ich denk die erste idee ist einfacher, weil zur zeit der server nur auf meinem pc lokal ist und ich will ja ncht andauernt ein programm am laufen haben!

das heißt ich muss jetzt eine weitere tabelle für jeden spieler haben wo die rohstoffe und die gebäudeproduktion drinn stehen!

Torley
Hi,

nein nicht ganz. Du brauchst genau EINE weitere Tabelle. Nicht eine pro Spieler. Das läßt sich sonst später fast gar nicht mehr realisieren. (stell dir mal vor du würdest alle tabellen für 1000 Spieler anlegen müssen )

Du speicherst in der Tabelle:

ID // Fortlaufende Nummer
Zeitpunkt
Aktion // Das was passiert ist
Wert // z.B. bei Aktion: RessourcenSetzen: 2000
Spieler // Die Nummer des Spielers.

Das ganze kann man dann nach belieben ausbauen, erweitern
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: MySQL Online Spiel! Zeit Problem!

  Alt 17. Jun 2008, 15:29
Ich hab Dich hoffentlich missverstanden Du wirst jetzt nicht für jeden Spieler eine neue Tabelle anlegen, oder?

Das solltest Du anders lösen. Zum Programmlauf sollten in der Regel eher selten neue Tabellen angelegt werden.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Torley

Registriert seit: 24. Jan 2008
Ort: Freudenberg
39 Beiträge
 
Delphi 6 Professional
 
#7

Re: MySQL Online Spiel! Zeit Problem!

  Alt 17. Jun 2008, 15:41
ok dann halt eine neue für alle!
das heißt ich hab jetzt tabelle user, für jeden user eine tabelle in der die stufe der gebäude und so stehen und eine log tabelle in der die aktionen stehen!

wird diese log tabelle nicht zu groß? wenn ich für jeden spieler aus dieser tabelle die daten holen muss, es 12 gebäude gibt und 4 vershciedene rohstoff arten?!

das heißt ich muss eine procedure schreiben die die daten aktualisiert fals darauf zugegriffen wird!

wenn nun aber im spiel eine übersicht der rohstoffe sein soll die sekündlich wachsen kann ich das nicht über den server laufen lassen! das heißt ich brauch im spiel einen timer der am start die rohstoffe aus der tabelle holt und dann selber immer erhöht. erst wenn ich ein gebäude bau wird überprüft ob die summe der rohstoffe stimmt.?!

mfg torley
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: MySQL Online Spiel! Zeit Problem!

  Alt 17. Jun 2008, 15:49
Ich kenn jetzt ad Hoc kein Spiel, bei dem Rohstoffe sekündlich wachsen. Es ist in der Regel so, daß alle 15 Minuten aktualisiert wird (zB bei d-wars.com so gemacht).

Zu den Tabellen: Mal sie Dir halt mal auf und schau ob alles drinsteht, was Du Dir so vorstellst. Dann überleg, wie die zusammen passen, ob Du eindeutige Zuordnungen zwischen den Tabellen hinbekommst. Dann hast du fast schon ein Datenmodell

Sherlock
Oliver
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#9

Re: MySQL Online Spiel! Zeit Problem!

  Alt 17. Jun 2008, 15:54
Zitat von Torley:
ok dann halt eine neue für alle!
das heißt ich hab jetzt tabelle user, für jeden user eine tabelle in der die stufe der gebäude und so stehen und eine log tabelle in der die aktionen stehen!
Ähh nein. Du hast deine Tabelle User. Eine Tabelle mit den Stufen der Gebäude für alle (!) User und deine Log-Tabelle.

Zitat:
wird diese log tabelle nicht zu groß? wenn ich für jeden spieler aus dieser tabelle die daten holen muss, es 12 gebäude gibt und 4 vershciedene rohstoff arten?!
Kommt drauf an wie lang dein Spiel laufen soll. Ggf. kannst du alte Datensätze wieder entfernen, wenn du sie nicht mehr brauchst.

Zitat:
wenn nun aber im spiel eine übersicht der rohstoffe sein soll die sekündlich wachsen kann ich das nicht über den server laufen lassen! das heißt ich brauch im spiel einen timer der am start die rohstoffe aus der tabelle holt und dann selber immer erhöht.
Da hätten deine Spieler glaub ich was dagegen Die Zähler könnten nämlich auseinander laufen, da nicht alle Uhren gleich schnell laufen.
  Mit Zitat antworten Zitat
Torley

Registriert seit: 24. Jan 2008
Ort: Freudenberg
39 Beiträge
 
Delphi 6 Professional
 
#10

Re: MySQL Online Spiel! Zeit Problem!

  Alt 17. Jun 2008, 19:00
Zitat:
Ähh nein. Du hast deine Tabelle User. Eine Tabelle mit den Stufen der Gebäude für alle (!) User und deine Log-Tabelle.
Das heißt ich soll von jedem spieler alle gebäudedaten(12), alle forschungen(10) und alle Flotten(15) in eine tabelle schreiben, wobei jeder spieler 10 Planeten haben kann!

Das macht bei 100 Spielern a 10 Planeten a 12 gebäude, 10 forschungen und 15 flotten =3700 datensätze?!
ist das nicht ein wenig zu viel?!

Ich mein, es wär viel einfacher für jeden spieler eine tabelle mit 10 datensätzen zu schreiben in denen alles steht! das macht dann bei 100 spielern 100 tabellen mit 10 datensätzen = 1000 datensätze !?

MFG Torley
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz