Announcement

Collapse
No announcement yet.

Sind meine Ideen sinnvoll?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Sind meine Ideen sinnvoll?

    Guten Abend liebe Community,

    ich bin ein junger Webentwickler, der sich gerade auf die Programmierung seines ersten eigenen Browsergames vorbereitet. Das Projekt soll in im Frontend mit XHTML, CSS2/3 und JavaScript + jQuery aufgebaut und hauptsächlich in diesem ablaufen, der Backend soll die Daten für den Frotend berechnen und speichern.
    Dies war eine kurze Formulierung.

    Nun das ganze etwas detailreicher.

    Das Spiel soll mit einem auf HTML und Javascript basierten "Client" gespielt werden. Dabei werden benötigte Daten im JSON-Format per AJAX mit dem Webserver ausgetauscht. Die vom Webserver (geplant ist dabei lighttpd) bereitgestellten Daten (ebenfalls im JSON-Format) werden per Javascript-Template-Engine verarbeitet und angezeigt.

    Dadurch möchte ich den Aufschwung der PC-Hardware nutzen. Meine Applikation braucht nach diesem Konzept eindeutig mehr Rechenleistung des Clienten als durchschnittliche Applikationen welche meist in PHP den HTML-Code generieren und diesen an den Clienten senden - bei jedem Aufruf! Mein Konzept sendet nur die benötigten Daten hin und her, die Templates liegen im Cache des Browsers.

    Der Webserver läuft wie gesagt mit dem leichten und schnellen lighttpd. PHP wird als Skriptsprache genutzt. MySQLi ist die Schnittstelle zur MySQL 5 Datenbank welche ein durchdachtes Design nutzt. In der MySQL Datenbank möchte ich mit diversen neuen Funktionen wie den VIEW-Tables und Stored Procedures und auch seltener genutzte Table-Engines wie die InnoDB (für sich häufig ändernde Tabellen) oder auch die HEAP (welche durch die ausschließliche Nutzung des Arbeitsspeichers extrem schnell ist). Standart ist jedoch MyISAM.
    Ich möchte die großen Berechnung soweit wie möglich in MySQL auslagern, da ich von diversen profis erfahren habe, das SQL schneller rechnen kann als PHP (da dieses erst kompiliert wird etc.).
    Bei PHP bin ich derzeit am probieren ob ich das HipHop PHP-Tool von Facebook verwenden kann. Dieses kompliliert die PHP Dateien in C, welche dann direkt ohne jedes mal neu kompiliert zu werden vom Webserver ausgeführt wird. Dies spart (zumindest bei Facebook) 50% der Ausführungszeit eines PHP Skripts.

    Im Grund läuft, wenn man das grob sieht, alles über Javascript und SQL. PHP dient in meinen Vorstellungen lediglich zur Aufbereitung der Daten und Schnittstelle zwischen Frontend und Backend, da es da noch keine direkte gibt (soviel ich weiß).


    Ich bin wie gesagt ein junger (18 Jahre) Webentwickler, der weder eine Ausbildung noch schulische Arbeiten dazu leisten musste. Ich habe mein Projekt derzeit in Planung und dies ist was das Programmtechnische angeht dabei rausgekommen.

    Was meint ihr dazu? Ist dies so überhaupt umsetzbar? Ist es eine gute Idee im Bezug auf ein rechenintensives Browsergame (Wirtschaftssimulation ähnlich wie Patrizier)?

    Danke für eure Meinung!

    lg
    Kevin

  • #2
    des Clienten als durchschnittliche Applikationen welche meist in PHP den HTML-Code generieren
    Das macht nicht der Client, sondern in jedem Fall der Webserver. Insofern kannst du "den Aufschung der PC-Hardware" nicht nutzen.

    Mein Konzept sendet nur die benötigten Daten hin und her, die Templates liegen im Cache des Browsers.
    Darauf hast du keinen Einfluß und es wäre schlecht darauf zu bauen, das der Client cacht.

    bei jedem Aufruf! Mein Konzept sendet nur die benötigten Daten hin und her
    Sofern gecacht wird, ist das Standfunktionaliät eines Clients

    MySQL Datenbank möchte ich mit diversen neuen Funktionen wie den VIEW-Tables und Stored Procedures und auch seltener genutzte Table-Engines wie die InnoDB
    Was könnte an Views usw. neu sein? Warum wird InnoDB selten genutzt?

    Standart ist jedoch MyISAM
    Bei wem? Und warum solltest du in deiner Anwendung die Engines mischen?

    kann als PHP (da dieses erst kompiliert wird etc.).
    PHP wird nicht compiliert, sondern interpretiert

    Bei PHP bin ich derzeit am probieren ob ich das HipHop PHP-Tool...
    PHP HIPHOP kompiliert keinesfalls PHP-Code nach C++, sondern wandelt PHP-Code in C++ Code um. Dieser muss danach mit einem C/C++ Compiler compiliert werden

    Schon mal an einen Java-Application-Server gedacht, mit Java als Serversprache?
    Oder einem Javaclient statt einem Browser?
    Christian

    Comment


    • #3
      Das macht nicht der Client, sondern in jedem Fall der Webserver. Insofern kannst du "den Aufschung der PC-Hardware" nicht nutzen.
      In meinem Fall tut das die JS-Template-Klasse, nicht der Webserver. Der stellt nur Daten bereit die im Browser per Javascript im Template durch Platzhalter ersetzt werden.

      Darauf hast du keinen Einfluß und es wäre schlecht darauf zu bauen, das der Client cacht.
      Ich baue nicht darauf, sondern nutze dies nur im Falle das es gegeben ist aus. Natürlich arbeitet die Anwendung auch ohne Browsercache, dann eben nur wesentlich langsamer, da Templates jedes mal vom Webserver geladen werden müssen.

      Was könnte an Views usw. neu sein? Warum wird InnoDB selten genutzt?
      Diese Aussage kommt daher, weil Projekte mit denen ich bisher in Kontakt stand eben dies nicht nutzte bzw. den MySQL Standart MyISAM nutzen.

      Und warum solltest du in deiner Anwendung die Engines mischen?
      Weil jede seine Vorteile hat.

      PHP wird nicht compiliert, sondern interpretiert
      Das war eine Fehlaussage von mir, soll passieren

      Schon mal an einen Java-Application-Server gedacht, mit Java als Serversprache?
      Oder einem Javaclient statt einem Browser?
      Ich möchte keine Software erzwingen, Java ist, wenn es auch schade ist, nicht auf jedem Rechner vorhanden. Ein Webbrowser schon.
      Außerdem kann ich kein Java.

      Comment


      • #4
        JS-Template-Klasse, nicht der Webserver.
        Wenn du im Web (Browserbereich) bei solcher Software/Spielen mit Javscript den Teil verarbeitest der für die komplette Logik der Software/spiels verandwortlich ist, hast du null Sicherheit im Bezug auf manipulationen!

        Comment


        • #5
          Ich weiß

          Deshalb auch nur eine Template-Klasse, keine Logik oder Berrechnungen. Diese erledigt MySQL + PHP.

          Der Client sendet eine Anfrage an den Server. Dieser weiß mit den übergebenen konstanten Parameter, welche Seite nun angezeigt werden soll. PHP ist nun für die Werte die auf der Seite angezeigt werden verantwortlich und berechnet diese (mathematische Berechnungen werden von MySQL übernommen). Die Ergebnisse werden im JSON Format an den Client zurückgesendet. Dieser lädt nun die rohe Template Datei (in denen auch Platzhalter für die berechneten Werte drinnen sind) und ersetzt die Platzhalter mit den Daten welche im JSON Format vorliegen. Die Template-Klasse kann neben Platzhaltern ersetzen, auch IF-ELSE und Schleifen, was aber nur für die Darstellungen benötigt wird, nicht für die Logik.

          Comment


          • #6
            Hi,

            es macht natürlich Sinn bei Abfragen die Logik soweit es geht in die MySql-Abfrage zu packen, anstatt die Ergebnisse per PHP zu verknüpfen oder zu filtern.

            Aber was meinst du damit?

            Originally posted by Kevni View Post
            mathematische Berechnungen werden von MySQL übernommen.
            PHP Code:
            $x 
            [highlight=sql]SELECT 3 + 2[/highlight]

            Originally posted by Kevni
            Ich möchte die großen Berechnung soweit wie möglich in MySQL auslagern, da ich von diversen profis erfahren habe, das SQL schneller rechnen kann als PHP (da dieses erst kompiliert wird etc.).
            Die MySql-Abfragen müssen aber auch interpretiert werden. Ich wage mal zu bezweifeln, dass es sich lohnt Berechnungen durch den SQL-Server ausführen zu lassen.

            Oder meintest du das anders?
            "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)

            Viele Grüße Novi

            Comment


            • #7
              Hallo Kevin,

              bevor Du das sogenannte "Rad" neu erfindest, schau Dir doch mal ein Framework an, z.B.

              http://www.pradosoft.com oder
              http://framework.zend.com/

              Die sogenannten "Avtive Controls" oder AJAX-Komponenten machen eben das was Du möchtest, eine Anfrage "im Hintergrund" an den Web-Server und das Neuzeichnen der anfragenden Komponente.

              Ich nehme an, dass Du noch kein Browserspiel oder andere größere Applikationen geschrieben hast. Deshalb schlage ich aus zwei Gründen vor, dass Du zuerst so etwas kleines wie z.B. "Tic-Tac-Toe" oder "Türme von Hanoi" implementierst. Die Gründe sind:
              1. Kennenlernen des Frameworks, sowie das allgemeine Herangehen an die Programmierung.
              2. Der Erfolg "etwas", auch wenn es klein ist, umgesetzt zu haben motiviert ungemein. Denn eine größere Aufgabe, die sich hinzieht, kann sie Motivation trüben.

              Comment


              • #8
                Hallo,
                Originally posted by Kevni View Post
                ...Ich möchte die großen Berechnung soweit wie möglich in MySQL auslagern, da ich von diversen profis erfahren habe, das SQL schneller rechnen kann als PHP (da dieses erst kompiliert wird etc.).
                Wenn diese "Profis" das genauso und genauso allgemein gesagt haben, dann solltest du dir neue "Berater" suchen.

                Korrekt ist: Berechnungen im Zusammenhang mit einer Abfrage, Summenbildung, etc. sollten durch die DB gleich mit erledigt werden, da es aufwändiger und sicherlich auch langsamer ist, dies erst später in PHP zu tun.
                Eine "große Berechnung" jedoch als Abfrage an die DB zu schicken weil "SQL schneller rechnen kann als PHP" wäre ein guter Stoff für eine 1.April-Kolumne .
                Für die einzelne Rechenoperation betrachtet mag es sein, dass ein SQL-Server marginal schneller ist als das interpretierende (nicht kompilierende!) PHP. Wenn man den Overhead für Zusammenstellen und Absenden der Abfrage (die ja auch durch PHP interpretiert werden muß), den Netzwerkverkehr zum und vom SQL-Server und das anschließende Auswerten des Ergebnisses hinzurechnet, dann hat wohl PHP um Längen die Nase vorn.

                Gruß Falk
                Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                Comment


                • #9
                  Natürlich geht es dabei nicht um Rechnung wie "3 + 5"
                  Ich habe konstante Werte in der Datenbank stehen, die miteinander verrechnet einen Warenpreis bilden sollen. Die rechnung ist dabei natürlich allgemein gesehen relativ aufwendig.

                  Sollte ich demnach die konstanten Werte die zur Berechnung gebraucht werden eher in der Datenbank halten und dort direkt ausrechnen lassen ( "SELECT WarenPreis(stadt_id, waren_id);" oder die konstante Werte in Arrays setzen und mit einem PHP Script ausrechnen? Für die konstanten Werte habe ich mir die HEAP-Engine ausgesucht, welche da sicherlich am sinnvollsten wäre, da keine nur INSERT auf die Tabelle angewendet wird.

                  Ich möchte keine Berechnung so ausführen:
                  PHP Code:
                  <?php
                  $Zahl 
                  25;
                  $DB->query("SELECT 10*"$Zahl .";");
                  ...
                  ?>
                  Entweder nur PHP oder nur SQL

                  Comment


                  • #10
                    Ich will ja nicht quer in die Diskussion platzen, aber Falk Prüfer hat Recht!

                    Wenn ich Dir noch einen kleinen Tip geben kann, halte Dich nicht mit solchen Überlegungen zu lange auf! Jetzt etwas so optimieren zu wollen ist der falscheste Ansatz den du einschlagen kannt! Wenn dein Spiel in 5 Jahren mal 10.000 User am Tag hat - dann lohnt es sich zu optimieren!

                    Fang einfach mal an ... nutze die DB als Datenpool und PHP-Scripte für die Kommunikation mit dem User/Browser... erstelle einen Prototypen... teste Deine Überlegungen erst einmal aus
                    Falls Du noch nie so etwas gemacht hast ... versuch mal mit einem Tic-Tac-Toe Game (sollte ja schnell gehen) und Du wirst ganz schnell merken wo die wirklichen Probleme liegen

                    Über die geschwindigkeit von PHP würde ich mir an deiner Stelle jetzt wirklich keine Gedanken mehr machen

                    Chears
                    D.

                    Comment

                    Working...
                    X