• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mini, Mini Spiel in PHP

Bloodsilver

Neues Mitglied
Hi,

programmieren war mir nie ganz fremd. Ich fing mit BASIC auf nem C64 an :-) Dann habe ich mich eine ganze Zeit mal intensiv mit Visual Basic beschäftigt und irgendwann hatte ich, berufsbedingt, keine Zeit mehr. Da ich beruflich viel im Web zu tun habe und mich auch mit Webseiten beschäftige, habe ich dann irgendwann angefangen, mir PHP anzueignen. Noch nichts Berauschendes aber ein kleines CMS traue ich mir zu. Soweit die Vorgeschichte. Nun habe ich lange Zeit nichts mehr gemacht und irgendwie wollte mein Sohn, dass ich mit ihm ein kleines Spiel programmiere. Für mich mal wieder eine Möglichkeit mich ein wenig ins Programmieren reinzufriemeln aber ich glaube, PHP ist dazu kaum geeignet. Helden meines Alters werden von damals auf dem C64 noch Kaiser, Hanse und Co. kennen. Sowas ist ja recht einfach mit PHP und MySQL zu realisieren. Aber wenns grafisch wird und es was mit Bewegung zu tun hat, dann scheitert PHP oder zumindest meine Kenntnisse :-) Wie könnte ich denn, auf einer 2D Karte, so wie früher bei den klassischen 2D RPGs, eine kleine Figur darüber bewegen lassen? Das geht eigentlich doch gar nicht in PHP, oder? Da werde ich mir wohl Java aneignen müssen, denke ich ...

Also nochmal zum Verständnis: Ich will hier nicht irgendein öffentliches Browsergame entwickeln, dass soll einfach nur für den Hausgebrauch sein, nix Aufwendiges :-)

Danke für Eure Antworten

LG
Marcus
 
Werbung:
Das was du machen willst, ist ein auf HTML5 und JavaScript basierendes Tile-Game.

An solch einem Spiel bin ich auch derzeit dran. Ich hatte durch die Hilfe von Google ein auf HTML5 basierendes Beispiel Spiel gefunden, welches von einem Franzosen Stammt und somit das Spiel auch auf Französisch ist.

Das ganze Funktioniert wie folgt:

Du hast deine Tiles, also z.B. 16x16 Pixel große Bilder. Eines davon wäre z.B. 1 Feld. Packst du nun 10 x 10 dieser 16x16 Pixel Tiles auf ein Feld mit unterschiedlichen Tile-Bildern, hast du somit eine Landschaft.. z.B. die von Pokemon, falls dir das etwas sagt.

Der Charackter ist auch ein Tile. Nur statt z.B einem Baum oder einer grünen Wiese, ist auf dem Bild ein Mensch.
Es sind verschiedene Layers ( Ebenen ) vorhanden. Du könntest z.B. auf der Ebene 2 den Untergrund darstellen, auf Ebene 3 alle NPC's, auf Ebene 4 die Objekte welche ÜBER dem Menschen angezeigt werden, z.B. das Dach eines Hauses, falls der Spieler UNTER dem Haus ist.

Nun wird permanent auf Keyboard Eingaben gewartet und diese Events an den Server übermittelt. Was für ein Server du benutzt ist egal, "Sagramore" ( googleIt! ) hat z.B. ein 1x1 Pixel Flash im Hintergrund, welches Packet an den Server sendet und über eine ActionScript ( Flash Scriptsprache ) - Weiterleitung ein Befehl an das Game. Z.B.

self.goToUrl( 'javascript: move( 'left', 1 ); ' );


Bei druck auf die <- Taste, wird dann z.B.

$( 'charackter' ).move( 'left' , 1 )

function move( direction, count ){

// Paar kontrollen, so das wenn direction == left, dann wird Variable "position" = MINUS 50 ( -50 ) .. bin gerade zu Faul soviel zu schreiben, daher denkt euch selbst was aus^^

this.left = position; ( z.B. this.left = -50 , also statt auf "left=250" was die Mitte entsprechend würde, wäre er jetzt ein Feld weiter Link, auf "left=200" und der Charackter selbst hat eine Weite von "50"
}
 
Werbung:
Ich sehe keine großen Probleme so etwas mit PHP (natürlich zusammen mit HTML / CSS zur Darstellung) zu realisieren. Zumindest wenn man auf Schnickschnack wie Pfeiltasten verzichtet und alles über Mausklicks regelt. Dann braucht man ein Spielfeld, eine Figur und Ereignisse die auf den Feldern passieren. Alles in allem wahrscheinlich gar nicht so schwer.
 
Kaiser kenne ich noch aus alten BBS-Zeiten Mitte der 90'er. :p

Aber das war ein datenbankbasiertes Spiel. Für animierte games ist die Combo aus Javascript, CSS3 und HTML5 (mit den neuen APIs) wie geschaffen, und es gibt auch bereits diverse Bücher darüber. Ich habe vergangene Woche mal Pong nachgebaut.
 
Man könnte auch "Schein"-Bewegungen Simulieren, indem man auf seiner Karte Links setzt mit den Koordinaten der anderen Felder. Je nachdem wo man hinklickt, da ist er dann beim nächsten Punkt.

Nachteile:
- Lange Ladezeiten
- Viel Traffic
- Keine Animationen
 
Werbung:
Auch ein interessanter Ansatz, durch die Ladezeitverzögerung natürlich ganz schön hakelig :-)

Aber wie könnte man das mit "Mausklicks" regeln? Gibt es überhaupt einen Befehl in PHP der auf einen Mausklick reagiert?? Kenne das nur bei Java ...
 
Nein. PHP arbeitet Serverseitig. JavaScript arbeitet Clientseitig, daher ist es auch damit möglich.

Construct 2 the HTML5 Game Maker - Scirra.com ( Construct 2 )

Habe ich mal getestet gerade und muss sagen, ist ein echt FETTES Programm!

Ich brauch unbedingt 2 Monate Urlaub, Grafiken, Ideen und ein Vorrat an Essen und Energy Drinks!! Arbeit nimmt soviel Zeit in Anspruch.. :/

Die Free Version sollte völlig genügen. Diese bietet bis zu 4 Layers ( Ebenen ) welche bereits das nötigste decken.. mehr Ebenen braucht man nur, falls man mit der Welt etwas übertreiben will und Himmelwelten oder Unterirdische Welten haben will.. das benötigt dann wiederum eine kostenpflichtige Lizenz.
 
Sicherlich ne coole Sache, aber ich wills ja ohne Editor schaffen!

Ginge das nicht mit Layern?
Ich setze einen Layer, wenn ein Button gedrückt wird, erhöhe ich die TOP Pisition z.B. um 50px. Die Frage ist nur, ob das über eine <form> gesteuert wid ....
 
Werbung:
So ein Framework ist völlig unnötig. Das geht auch alles mit normalen Bordmitteln.

Nachfolgend ein Code-Ausschnitt aus dem vorher genannten Pong. Der Ball führt eine Kollisionsabfrage mit der Spielfeldbegrenzung durch, legt darauf basierend die Laufrichtung fest und verändert seine X/Y Position um jeweils 5px. Die Funktion moveBall() wird durch ein setInterval() alle 30 ms aufgerufen, wodurch der Animationseffekt entsteht. Das ist einfaches CSS / JavaScript und sollte nicht allzu schwer zu verstehen sein.

PHP:
// a global object to store all global variable we use for the game
var pingpong = {}

pingpong.ball = {
    speed: 5,
    x: 150,
    y: 100,
    directionX: 1,
    directionY: 1
}

$(function(){
    // set interval to call gameloop every 30 milliseconds
    pingpong.timer = setInterval(gameloop,30);
});

function gameloop()
{
    moveBall();
};

function moveBall()
{
    // move the ball in every 30 milliseconds
    var playgroundHeight = parseInt($("#playground").height());
    var playgroundWidth = parseInt($("#playground").width());    
    var ball = pingpong.ball;
    
    // check playground boundary
    // check bottom edge
    if (ball.y + ball.speed*ball.directionY > playgroundHeight)
    {
        ball.directionY = -1;
    }
    // check top edge
    if (ball.y + ball.speed*ball.directionY < 0)
    {
        ball.directionY = 1;
    }
    // check right edge
    if (ball.x + ball.speed*ball.directionX > playgroundWidth)
    {
        ball.directionX = -1;
    }
    // check left edge
    if (ball.x + ball.speed*ball.directionX < 0)
    {
        ball.directionX = 1;
    }
    ball.x += ball.speed * ball.directionX;
    ball.y += ball.speed * ball.directionY;
    
    // actually move the ball with speed and direction
    $("#ball").css({
        "left" : ball.x,
        "top" : ball.y
    });
 
Ich arbeite mit einem Team an einem PHP und Javascript basiertem 2d Rollenspiel (rundernbasiert).
Dabei musste ich mir auch solche Gedanken machen, wie ich denn zum Beispiel Karten umsetze. Ich hatte angeangen mit Javascript Tabellen übereinander zu legen.
Solch einen Karten Editor (der inzwischen nicht mehr genutzt wird), habe ich noch auf meinem Webspace liegen:
Map Editor

Also an Javascript wirst du da höchstwahrscheinlich nicht vorbeikommen, wenn du einigermaßen fließende Bewegungen haben willst.
Die Arbeit mit Javascript macht in solchen Fällen aber eindeutig Spaß und Bedarf nicht so viel Einarbeitungszeit, wenn man schon andere Script oder Programmiersprachen beherrscht. :)
 
Zurück
Oben