php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.03.2010, 14:15  
Erfahrener Benutzer
 
Registriert seit: 25.09.2009
Beiträge: 2.044
PHP-Kenntnisse:
Fortgeschritten
BlackScorp wird schon bald berühmt werdenBlackScorp wird schon bald berühmt werden
Standard [Erledigt] Browsergame : Objekte auf einer Karte

Hallo leute,

ich würde mir mal gerne ein paar Ideen anhören, wie man Unterschiedliche objekte auf einer Karte anlegen könnte, besser gesagt wie die Datenbank dazu aussehen könnte.

Folgende Situation:

Aktuell habe ich meine Karte(n) als Array in einer .php Datei abgespeichert, das Ganze sieht dann so aus:

PHP-Code:
// erste zahl = y, zweite zahl = x
$map[0][0] = 'gras';
$map[0][1] = 'gras';
$map[0][2] = 'land';
$map[0][3] = 'forest1';

$map[1][0] = 'forest2';
$map[1][1] = 'gras';
$map[1][2] = 'city1';
$map[1][3] = 'gras';

$map[2][0] = 'gras';
$map[2][1] = 'gras';
$map[2][2] = 'gras';
$map[2][3] = 'gras';

$map[3][0] = 'gras';
$map[3][1] = 'gras';
$map[3][2] = 'gras';
$map[3][3] = 'gras'
die namen sind css Klassen namen, über Ajax request hole ich mir die klassen namen aus einem bestimmten bereich raus und ersetze die div klassen mit den klassen aus dieser php datei.

funktioniert alles wunderbar, nun möchte ich einige Objekte auf der Karte Positionieren. Die Objekte wären:

1) Begehbare blöcke(Ich möchte nicht dass die Karte immer rechteckig ist, desswegen kann ich als begrenzung nicht die Karten größe verwenden, außerdem sollten einige wege vorgegeben sein innerhalb der karte, desswegen sollen diese Blöcke einige bereiche sperren so dass man zb durch ein bestimmtes gebiet durchgehen MUSS)

2) Monster (Für fast jedes Feld werden Monster zugewiesen, angenommen ich komme auf ein feld und auf diesem feld befinden sich 10 Monster, wenn ich einen geötet habe, sollen nur noch 9 zur auswahl stehen. wenn eine andere person auf dem selben feld ein monster getötet hat, darf ich nur noch 8 monster sehen. Nach einer bestimmten zeit soll ein monster gespawn/wiedererweckt werden. wahrscheinlich eine zeit in der DB abspeichern wann das letzte monster getötet wurde)

3) Portal (Mit den Portalen soll es möglich sein auf andere Maps zu kommen, zb Dungeons oder Städte)

4) Rohstoffe/Schatztruhen(Bestimmte Items sollen zufällig auf der karte plaziert werden in einem bestimmten intervall, und wieder verschwinden sobald ein spieler das gegenstand genommen hat)

Also die begehbaren blöcke, müsste ich an die kartenpositionen fix anlegen, Rohstoffe/Schatztruhen dafür könnte ich eine Tabelle anlegen zb:

mapItems
ID | posX | posY | itemId | Amount

beim aufheben des gegenstands, einfach datensatz löschen und in die Inventar tabelle übertragen.

Portale könnte ich auch fix an das MapArray dranhängen oder extra ein array für die Karte erstellen mit Portalen an welcher koordinate die sich befinden und wohin man sich mit den bewegen kann.

Aber wie könnte ich das mit den Monstern umsetzen? Habt ihr da irgendwelche ideen? wenn ihr fragen habt, fragt

MFG
__________________
Mein kleines Projekt
-Cruel Online-
5 von 3 Leuten können kein Bruchrechnen
BlackScorp ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 31.03.2010, 14:21  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.129
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Also auf den ersten Blick würde ich das in der Richtung machen:

Felder
id|x|y|typ|begehbar

Monster
id|type|...

Felder_Monster
feld_id|monster_id


usw.
xm22 ist offline   Mit Zitat antworten
Alt 31.03.2010, 14:28  
Erfahrener Benutzer
 
Registriert seit: 25.09.2009
Beiträge: 2.044
PHP-Kenntnisse:
Fortgeschritten
BlackScorp wird schon bald berühmt werdenBlackScorp wird schon bald berühmt werden
Standard

naja die Felder stehen ja eigentlich nicht in der Datenbank drin. Ich habe mir erstmal das so überlegt

monsters
ID | name | picture | hitpoints | manapoints | .......
1 | orc | orc.jpg | 100 | 100 | ....

mapobjects
ID | posX | posY | monsterId | expired
1 | 0 | 0 |1 |1270038298
1 | 0 | 0 | 1 |1270038313

in der expired spalte schreibe ich jedes mal ein wert rein, wenn das monster getötet wurde. und lasse mir alle monster von der position x/y anzeigen bei den der expired datum weniger als 10-20 minuten her ist. sowas in der art.

aber dann kann ich die tabelle nicht mapobjects nennen, sondern muss dann mapmonsters oder so hießen. und wenn ich items an die map dranhänge muss ich weitere tabelle anlegen. und bei jeder bewegung müsste ich dann 2 tabellen überprüfen und wenn 100 spieler sich gleichzeitig bewegen dann werden 200 requests an den server geschickt. eigentlich müsste ich die tabellen irgendwie zusammen tun.
__________________
Mein kleines Projekt
-Cruel Online-
5 von 3 Leuten können kein Bruchrechnen
BlackScorp ist offline   Mit Zitat antworten
Alt 31.03.2010, 15:48  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.129
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
naja die Felder stehen ja eigentlich nicht in der Datenbank drin. Ich habe mir erstmal das so überlegt
Was spricht dagegen?
Zitat:
dann werden 200 requests an den server geschickt
Es werden noch wesentlich mehr Requests sein (Punkte abfragen, Login-Status, etc.). Du kannst doch die Items und Monster zusammen mit den Feldern per JOIN auf einmal holen.
xm22 ist offline   Mit Zitat antworten
Alt 31.03.2010, 16:21  
Erfahrener Benutzer
 
Registriert seit: 25.09.2009
Beiträge: 2.044
PHP-Kenntnisse:
Fortgeschritten
BlackScorp wird schon bald berühmt werdenBlackScorp wird schon bald berühmt werden
Standard

Zitat:
Zitat von xm22 Beitrag anzeigen
Es werden noch wesentlich mehr Requests sein (Punkte abfragen, Login-Status, etc.).
jep ich weis das ist halt das problem zz . ich will so wenig anfragen an den server schicken wie möglich(beantwortet auch die frage wieso nicht alles in der db steht sondern einige sachen in einer php datei drin sind)
Zitat:
Zitat von xm22 Beitrag anzeigen
Du kannst doch die Items und Monster zusammen mit den Feldern per JOIN auf einmal holen.
das ist das problem. also angenommen ich würde 3 tabellen anlegen in jeder tabelle werden erstmal NUR die einzelnen objekte defeniert werden also sowas:

monsters
ID | name | level | healpoints | damage| picture | ....
1 | goblin | 1 | 10 | 1 | goblin.gif | ..

portals
ID | sourceX | sourceY | sourceMap | destX | destY | destMap
1 12 | 13 | 'worldMap' | 5 | 5 | 'dungeon1'

items
ID | name | picture | .....
1 | 'Schatztruhe' | schatz.gif

invalidPositions
ID | mapName | x | y
1 | 'worldMap' | 10 | 12

charakters
ID | name | x | y | healtpoint | picture | ...
1 | 'Mein cooler char'| 10 | 12| 1000 | male_human.gif

das wären dann alle werte die auf einer karte eventuell angezeigt werden müssten. alles eventuell denn nicht jedes feld muss zwangslaufig monster haben oder items oder andere spieler oder unbegehbare positionen.

problem liegt halt daran wie ich das ganze mit einer JOIN anweisung zusammensetzen müsste oder eventuell noch eine weitere n:m tabelle anlegen? wie könnte ich es am besten realisieren?
__________________
Mein kleines Projekt
-Cruel Online-
5 von 3 Leuten können kein Bruchrechnen
BlackScorp ist offline   Mit Zitat antworten
Alt 01.04.2010, 09:14  
Neuer Benutzer
 
Registriert seit: 01.04.2010
Beiträge: 15
PHP-Kenntnisse:
Fortgeschritten
jomee ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von BlackScorp Beitrag anzeigen
jep ich weis das ist halt das problem zz . ich will so wenig anfragen an den server schicken wie möglich(beantwortet auch die frage wieso nicht alles in der db steht sondern einige sachen in einer php datei drin sind)
hi ,
falls du gar keine anfragen zwecks map daten die sich im grunde nicht ändern,
an die datenbank schicken willst dann "MUSST" du Memcached benutzen,
hab mir deine seite kurz angekuckt, war aber glaub zu dumm mich anzumelden

also folgendes, du sparst zugriffe auf daten die sich nicht ständig ändern, in dem du daten aufm server cache (Ram) mittels memcached speicherst
(falls du mal millionen von usern hast, dann ist das sehr sinnvoll) , das gilt auch für user daten die sich nicht ständig ändern etc.
(und du kannst das auch händeln falls es sich ändert, dann löscht du den cache zu dem user sozusagen.

ein anderer punkt ist, das du für die 'grass' strings etc., ne var nutzen soltest erstmal, weil wenn dein spiel funzt, willst ja das es in verschiedenen sprachen läuft, da ist es schwierig das multisprachig zu machen wenn du überlall die texte ändern musst.
sei mir net böss, des sind jetzt nur tipps ok
(ich hoff ich hab nix verzapft was du eh schon kennst )

grüsle

Geändert von jomee (01.04.2010 um 09:29 Uhr).
jomee ist offline   Mit Zitat antworten
Alt 01.04.2010, 09:28  
Erfahrener Benutzer
 
Registriert seit: 25.09.2009
Beiträge: 2.044
PHP-Kenntnisse:
Fortgeschritten
BlackScorp wird schon bald berühmt werdenBlackScorp wird schon bald berühmt werden
Standard

es geht auch ohne Memcach, die Map einfach als array abspeichern, aber meinem Fall ging es nicht um die Map, die habe ich bereits umgesetzt und funktioniert alles. Es ging mir eigentlich darum wie ich am besten 3 unterschiedliche arten von objekten zu einer tabelle hinzufüge.

wegen dem namen 'gras'. dieser name wird auf dem Layout garnicht auftauchen(als text oder so), der name 'gras' ist ein css klassen name. wenn ich zb
<div class="meineMap gras"></div>
anzeige, so sehe ich ein div mit gras bild drin, das gleiche auch für city, forest usw. es sind nur die namen die in der css datei drin stehen.
wegen den Multilanguage , dafür habe ich bereits gesorgt, das ist kein problem.
__________________
Mein kleines Projekt
-Cruel Online-
5 von 3 Leuten können kein Bruchrechnen
BlackScorp ist offline   Mit Zitat antworten
Alt 01.04.2010, 09:38  
Neuer Benutzer
 
Registriert seit: 01.04.2010
Beiträge: 15
PHP-Kenntnisse:
Fortgeschritten
jomee ist zur Zeit noch ein unbeschriebenes Blatt
Standard

serialisierung vielleicht?
(ausserdem nie und nimmer daten einfach nur in files speichern)

du wie gesagt, das war nu mein erster post hier, ich muss mich erstmal rumkucken und so
wollte dir nur tipps geben, du bist dessen erhaben, das ist auch gut so

Geändert von jomee (01.04.2010 um 09:45 Uhr).
jomee ist offline   Mit Zitat antworten
Alt 01.04.2010, 09:47  
Erfahrener Benutzer
 
Registriert seit: 25.09.2009
Beiträge: 2.044
PHP-Kenntnisse:
Fortgeschritten
BlackScorp wird schon bald berühmt werdenBlackScorp wird schon bald berühmt werden
Standard

Zitat:
Zitat von jomee Beitrag anzeigen
serialisierung vielleicht?
nein, es geht mir um das ERD, ob ich es so wie oben beschrieben ist, so lassen könnte und halt bei jeder bewegung auf 3 tabellen zugreifen werde, oder ob man es nciht irgendwie kombinieren sollte. wobei ich denke ein

SELECT * FROM
tabelle1,tabelle2,tabelle3
WHERE userid = xyz

eigentlich garnicht so schlimm wäre eventuell eine mapObjects tabelle und dann halt

SELECT * FROM
mapObjects,mapMonsters,mapPortals,player
WHERE mapObjects.posX = mapMonster.posX and mapObjects.posY = mapMonster.posY ... AND mapObject.posX = $_GET['x']

müsste eigentlich halb so wild sein.. ich probier es mal und später werde ich es sehen
__________________
Mein kleines Projekt
-Cruel Online-
5 von 3 Leuten können kein Bruchrechnen
BlackScorp ist offline   Mit Zitat antworten
Alt 01.04.2010, 09:53  
Neuer Benutzer
 
Registriert seit: 01.04.2010
Beiträge: 15
PHP-Kenntnisse:
Fortgeschritten
jomee ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das ist doch so ok oder nicht?
(so ganz hab ich das nicht verstanden glaub, muss nachdenken,
wo liegt das problem, du kannst ja mit einem select auf 3 tables zugreifen,
wie schneller willst das denn machen? viel effizienter gehts wohl nicht...)

Geändert von jomee (01.04.2010 um 09:59 Uhr).
jomee ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Verschachtelte Objekte und Vererbung GELight PHP-Fortgeschrittene 1 11.12.2009 09:09
Was bringt OOP wenn Objekte nach jeder Seite sterben? majorbenks PHP Tipps 2009 9 18.11.2009 14:11
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
Referenzen auf Objekte innerhalb eines Arrays PHP-Fortgeschrittene 6 31.08.2009 17:06
Scriptangebot Browsergame cean Scriptbörse 4 27.08.2009 17:41
Karte in PHP michi*1 PHP Tipps 2009 5 19.07.2009 01:24
[Erledigt] Open-Source Projekt - Browsergame - Programmierer gesucht T!G3R Beitragsarchiv 7 26.12.2008 19:19
Zweidimensionale Karte Griffith Datenbanken 19 02.07.2008 16:51
[Erledigt] Objekte vergleichen PHP-Fortgeschrittene 4 08.12.2005 16:20
Browsergame Beitragsarchiv 3 01.04.2005 14:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ajax browsergame karte, browsergames karten, php browsergame karte, browsergame map, php browsergame map, karte browsergame, browsergames map, php karte browsergame, php game map, browsergame karte php, php spiel karte, browsergame karte erstellen php, browsergame mit karten, browsergame karte, php map browsergame, browsergame map php, karten browser game, browsergame maps erstellen, grafiker browsergame, php klasse browsergame

Alle Zeitangaben in WEZ +1. Es ist jetzt 18:23 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum