| | | | |
| |||||||
| Off-Topic Diskussionen Mach mal Pause vom Programmieren! |
|
| | LinkBack | Themen-Optionen | Bewertung: |
| | |
| Erfahrener Benutzer | So, ich habe nun doch einmal das gesamte Tutorial durchgelesen. zu 1) Truppenbewegungen. Soweit gut, auch der Verweis darauf, dass dies explizit der direkte Weg ist. Ich würde da auch nicht zu sehr ins Detail gehen, denn wie du richtig sagst, ist das Problem der Wegfindung etwas, was extrem auf die Komplexität gehen kann. Das kann bedeuten, dass es an einem Meerbusen u.U. die Truppen direkt durchs Wasser schickt statts an der Küste entlang. Ich würde dieses plastische Beispiel im Nachsatz noch erwähnen, damit man sich als Laie unter einer Wegfindung auch etwas vorstellen kann und evtl. seine Spielkarte auch so designt, dass solche Meerbusen nicht vorkommen zu 2) Datenbank. Ich würde durchaus den Begriff für diese fast zeitgleichen Zugriffe nennen. Also durchaus einfach sagen, dass man sowas "Race Condition" nennt. Damit hat man auch gleich bei dererlei Problemen das richtige Google-Suchwort an der Hand. Im Unterkapitel, wie man das vermeidet würde ich darauf verweisen, dass man nicht bei jedem Schreibzugriff zwingend eine Transaktion öffnen muss. Auch wenn du das nicht explizit so sagst, kann man bei dir schon rauslesen: Am besten mache ich immer Transaktionen auf... Beispiel der Registrierung: Ich kann die doppelte Vergabe eines Benutzernamens auch per Unique Key verbieten. Dann muss ich nicht zwingend einen Select ausführen um zu gucken ob der Benutzername bereits vergeben ist. Stattdessen auf Verdacht den Insert ausführen. Kriege ich einen Duplicate Key weiss ich, dass der Benutzername vergeben wurde. Ob nun via Race Condition oder nicht, ist mir dann egal. Also: Gerade weil Transaktionen durchaus Overhead für die DB sind und auch hinsichtlich Locking evtl. nicht immer zielführend sollte man sich auch mit anderen Lösungsstrategien auseinandersetzen. Aber bei sowas sollte der Entwickler immer wissen, was er tut und auch gezielt per Kommentar darauf verweisen, warum er eine Transaktion aufmacht und warum nicht. 3) Die Karte: Soweit ok denke ich. Ich würde noch Stichworte geben und weiterführende Links, denn "realistische" Zufallskarten zu erzeugen, das kann durchaus etwas kompliziert werden. Dafür gibt es dann Hilfsprojekte, die einen echten Fluss, ausgehend von einem Berg einbauen usw. Auch hier darauf verweisen, dass man typischerweise die Karte nur einmal anlegegt und abspeichert (hast du ja bereits den Hinweis) und sich daher um Performance beim Generieren von Karten nicht so ganz so viel Gedanken machen muss. 4) Rangliste: Ich würde den Satz "in regelmäßigen Abständen" fett machen, denn das Berechnen der Rangliste ist eines der größten Overkills. An Vorteilen ruhig mit aufnehmen, dass ein Cronjob den Vorteil hat, dass man sich nicht sofort festlegen muss, wie oft die Rangliste aktualisiert wird. Du kannst später auch noch die Zeit auf einmal pro Stunde erhöhen oder auf "einmal am Tag, 3 Uhr nachts" ![]() 5) Ressourcen-Produktion: Ich würde mal behaupten: bcmath ist der falsche Weg in diesem Fall. Falsch im Sinne von nicht zielführend. Dass bcmath richtig rechnet, das meine ich aber nicht. Eine echte Notwendigkeit, Fließkommazahlen (im eigentlichen Sinn) zu verwenden besteht in den wenigsten Fällen. Bei genauer Betrachtung kann man die Präzision eigentlich vernachlässigen. Wobei vernachlässigen das falsche Wort ist. Man kann sie auf primitive Regeln zusammenstreichen und damit wie von Zauberhand verschwinden lassen. Sprich: Man arbeitet hier nie mit beliebig vielen Nachkommastellen. Ein einfacher Trick ist das programminterne Verwenden von Ganzzahlen. Das erreicht man mit 2 Möglichkeiten: a) Beim Aufteilen immer auf Ganzzahlen setzen. Das heisst auch, wenn 3 Spieler zusammen spielen und eine Beute von 50 Gold aufteilen, bekommen zwei Spiele 17 Gold und ein Spieler 16 Gold. b) Die Nachkommastellen "faken". In der DB und im Programm wird dann stehen, dass jemand 5000 Gold besitzt und pro Sekunde 1 Gold dazu verdient. Angezeigt wird das als "50 Gold" und 0,6 Gold pro Minute, sprich die letzten beiden Stellen werden abgeschnitten. Rein Programmtechnisch arebitet man mit Ganzzahlen. Doch der Benutzer sieht dann optisch lediglich, dass er alle 100 Sekunden 1 Gold verdient. Hintergrund: bcmath ist auch etwas langsamer als "richtige Ganzzahlen". Zum Eventsystem habe ich weiter oben bereits was gesagt. Was mir fehlt ist in der Einleitunsseite ein "Was wollen wir machen". Also der Projektvorspann. Und wenns nur in einem Satz ist. Du musst dir im Klaren sein, dass auch Anfänger das Tutorial lesen. Bei Browsergames ist der Prozentsatz der Kinder, die einen Traum haben aber 0 Ahnung, wie ein Projekt umgesetzt wird, extrem hoch. Daher würde ich es persönlich gut finden, wenn auf der ersten Seite sowas steht wie "Am Anfang steht ein gutes und durchdachtes Konzept" und ein "In diesen Tutorials beschäftigen wir uns mit typischen Browsergames, 2dimensionalen Karten usw." Rollenspiele zum Beispiel, bei denen man als Abenteurer durch die Spielwelt läuft, haben zwar eine Karte und dort bewegt man sich selbst über die Karte, aber man hat kein Produktionsgebäude und Rohstoffe müssen in der Spielwelt selbst durch Monster-Töten, Erledigen von Quests oder Pflücken von Blümchen "gefarmt" werden. Das, was du augenscheinlich beschreibst, ist eher ein Gott-Modus ala Siedler. Das sollte in der Einleitung deutlich werden denke ich.
__________________ www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer | Gibs zu, du hast ne Sekretärin, die die Textwände für dich tippt Oo
__________________ |
| | |
| | |||
| Erfahrener Benutzer Registriert seit: 05.01.2009
Beiträge: 474
PHP-Kenntnisse: Fortgeschritten ![]() | Zitat:
Hier kann es durchaus vorkommen das ein Datenbank Server mehr ausgelastet ist als der Php Server. Das liegt aber nicht am eigenen Script sonderen meisten an noob Scripten die von anderen Datenbanken belastet werden (Cronjobs). So ist der geteillte Datenbank Server sogut wie immer ausgelastet. Je nach Anbieter 10, 50, 100 Datenbanken pro Server. Vorallem weil viele Admin es mit dem Cronjobs intervalen übertreiben. (Am liebsten jede Sekunde) Davon ausgehen die Sortierung nach hintenverlegen empfinde ich als falsch. Egal ob nun was Nachgeladen wird oder ob alles auf einmal abgearbeitet wird. Mfg Splasch | ||
| | |
| | |
| Erfahrener Benutzer | Ich hab mir heute den RSA zerlegt, eigentlich Freitag schon. Und wärend das www.dreckstool.de sich neu installiert und neu einrichtet, habe ich Zeit.
__________________ www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih |
| | |
| | |
| Moderator und Wett-König | Hallo Frajac, ich habe die Texte hier nur quergelesen, du solltest jedoch noch deutlich mehr auf das Thema Persistenz und Datenmodell eingehen. Mit Ralf und Tobi aus dem APF-Forum habe ich für deren Browsergame ein Daten-Modell diskutiert, das gerade noch auf ein A2-Papier passt. Ohne vernünftiges Daten-Modell wird das daher IMHO nichts. Just my 2 cents, Dr.E.
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 22.10.2008
Beiträge: 222
PHP-Kenntnisse: Anfänger ![]() | Ich schreib ja selbst eins und hab ihr und da auch meine eigenen Erfahrungen in vielen Sachen gesammelt und gemacht.,. Ich bin froh, dass ich mein System / Spiel zum Laufen bekomme, was hier und da noch einigen Stellen nicht ganz so das macht, was ich mir vorstelle, aber ich kann sagen, dass ich es mit meinen wenigen Mitteln und wirklich Learning by Doing und Dank euch ( Com ) , mit meinen dussligen Fragen erstellt hab. Ich hab das hier mal komplett gelesen und muss sagen, hier werden / wurden Sachen angesprochen, da wird einem gleich wieder anders, weil ja auf Sachen geachtet werden muss, an die man so noch nie gedacht hat.,. Warum ist die Rangliste so ein Performencekiller ? Ich habs bei mir so gemacht, dass nach dem Ende des Prozesses, die Punkte für das aktuelle Ereigniss ( Stadt in meinem Fall ) neu errechnet werden, damit hab ich nur einmal einen kleinen Aufwand, die Punkte korrekt zu errechnen. Es gibt Sachen, die mir definitiv mehr Kopfzerbrechen machen und das ist mein Kampfsystem, was mir einfach nicht gelingen will.,. Weil ich denke, dass ich es mir einfach zu kompliziert mache.,. Ich würde mich freuen, wenn das Thema offen bleibt und es kein Mod dicht macht, weil es ja doch schon ein paar Tage alt ist.,. Zum Erfahrungstausch ist es definitv gut geeignet.,.
__________________ Learning by Doing --> Projekt eigenes BG <-- So lernt man am Besten alle Funktionen und kann sich dadurch viel aneignen --> Closed Beta Test <-- |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Suche] Verstärkung für Browsergame | luks2com | Freizeit | 3 | 05.08.2010 13:01 |
| Hobby Browsergame | Nuc | Beitragsarchiv | 0 | 12.11.2009 21:09 |
| Online - Einsatz Browsergame | h3nny | Beitragsarchiv | 2 | 23.10.2009 22:01 |
| Gesucht: 3D-Grafiker und Programmierer für bestehendes Browsergame | Ray94 | Beitragsarchiv | 1 | 03.10.2009 23:26 |
| Tutorial: PHP/MySQL und OOP | Chriz | Tutorials | 11 | 19.08.2009 23:51 |
| Lerne Grundlagen | Quellensammlung | cycap | PHP Einsteiger | 0 | 12.11.2008 16:23 |
| [Erledigt] Problem mit Tutorial | PrisonerOfDreams | PHP Tipps 2008 | 4 | 16.05.2008 11:59 |
| Browsergame | Beitragsarchiv | 3 | 01.04.2005 14:33 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php browsergame tutorial |